php implode二维数组并生成一个字符串

时间:2015-04-04 15:37:36

标签: php sql loops foreach implode

要在mysql中一次插入多个记录,我想首先将二维数组转换为字符串,然后在php中激活mysql查询以插入所有这些记录,

我有二维数组如下,

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 个答案:

答案 0 :(得分:2)

以下代码可用于解决问题,将2d数组内嵌到字符串

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

答案 1 :(得分:1)

我建议使用prepared statement而不是使用implode构建插入查询。

$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();
}

答案 2 :(得分:1)

嗯,您只能通过implode()来电来执行此操作。你必须遍历数组。但是这样的事情对你有用:

<?php

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

?>