PHP взорвать двумерный массив и генерировать строку

Чтобы вставить несколько записей одновременно в MySQL, я хочу сначала преобразовать двумерный массив в строку, а затем запустить запрос MySQL в PHP, чтобы вставить все эти записи,

У меня есть двухмерный массив, как показано ниже,

Array
(
    [0] => Array
        (
            [0] => Ryan
            [1] => 1
            [2] => 0
        )
    [1] => Array
        (
            [0] => Simon
            [1] => 2
            [2] => 1
        )
    .
    .
    .
)

И я хочу сделать такую ​​строку,

('Ryan', '1', '0'), ('Simon', '2', '1'), .....

Я знаю, если это было одно измерение, мы можем сделать это как, "'" . implode("','", $row) . "'"

Конечно, мы можем сделать это с помощью foreach внутри цикла foreach. Но я хочу сделать это с функцией взрыва. Любая идея?

3 ответа

Следующий код может быть использован для вашей задачи, чтобы внедрить 2d массив в строку

echo implode(', ', array_map(function ($entry) {
 return "(".implode(',',$entry).")";
}, $inputArray));

Я предлагаю использовать подготовленный оператор вместо создания запроса вставки с имплозой.

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$stmt = $mysqli->prepare("INSERT INTO myTable VALUES (?, ?, ?)");
$stmt->bind_param('sii', $row[0], $row[1], $row[2]);

foreach($rows as $row) {
    $stmt->execute();
}

Ну, вы не можете сделать это только с implode() звонки. Вы должны циклически перемещаться по массиву. Но что-то вроде этого должно работать для вас:

<?php

    echo $str = "(" . implode("), (", array_map(function($v){
        return "'" . implode("','", $v) . "'";
    }, $row)) . ")";

?>
Другие вопросы по тегам