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)) . ")";
?>