Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
191 views
in Technique[技术] by (71.8m points)

php - add one element into multidimensional array

i have a not difficult question, but I couldn't find an answer.

I have a multidimensional array for insert data with one query. The result is this:

INSERT INTO table (field1, field2, field3, field4) values ('1', '2', '3'),('1', '2', '3'),('1', '2', '3'),('1', '2', '3')

and I want to add one value in each tuple like this:

INSERT INTO table (field1, field2, field3, field4) values ('1', '2', '3','10'),('1', '2', '3','10'),('1', '2', '3','10'),('1', '2', '3','10')

This is the code (I also tried with array_push inside foreach):

$DataArr = array();
    for($i=1;$i<5;$i++){
        $fieldVal1 = 1;
        $fieldVal2 = 2;
        $fieldVal3 = 3;
 
        $DataArr[] = "('$fieldVal1', '$fieldVal2', '$fieldVal3')";
    }
$id=10;
$new=array();

foreach ($DataArr as $value) {
    $value[4]="'$id'";
}

$sql = "INSERT INTO table (field1, field2, field3) values ";
    $sql .= implode(',', $DataArr);
print_r($sql);

I tested this code but it doesn't work, can anyone help me?

question from:https://stackoverflow.com/questions/65858941/add-one-element-into-multidimensional-array

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
Here is the easy solution

    $DataArr = array();
    for($i=1;$i<5;$i++){
        $fieldVal1 = 1;
        $fieldVal2 = 2;
        $fieldVal3 = 3;
        $DataArr[] = "('$fieldVal1', '$fieldVal2', '$fieldVal3')";
    }
    $id=10;
    $new=array();
    foreach ($DataArr as $key =>$value) {
        $tmpVal = ltrim($value,"(");
        $tmpVal = rtrim($tmpVal,")");
    
        $tmpArray = explode(',',$tmpVal);
        array_push($tmpArray,'4');
    
        array_push($new, "(".implode(',',$tmpArray).")");
         
    }
    
    
    $sql = "INSERT INTO table (field1, field2, field3, field4) values ";
    $sql .= implode(',', $new);
    print_r($sql);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...