数组$solution
是二维的。我需要将其内容保存到 SQL 表中。但是,在保存之前,我需要检查 $solution[i][0]
属于查询结果SELECT num_arr FROM Schedule WHERE num_arr<>''
.
问题出在 $vals = implode(...)
行.如何在数组的第 i 行内爆逗号 $solution
?现在这一行导致字符串 0,0,0,0
而不是正确的值。
$columns_land = array("`num_arr`","`start`","`fin`","`way`");
$cols_land = implode(",",$columns_land);
for($i=0; $i<sizeof($solution); $i++) {
$vals = implode(',', array_map('implode_comma', $solution[$i]));
query_land = "INSERT INTO `Sequence` (" . $cols_land . ")
VALUES " . $vals . "
WHERE num_arr='".$solution[$i][0]."'
AND num_arr IN (SELECT num_arr FROM Schedule WHERE num_arr<>'')";
$result_land = execute_query($query_land);
}
function implode_comma($arr) {
return '(' . implode(',', $arr) . ')';
}
最佳答案
这句话让我感到困惑:
$vals = implode(',', array_map('implode_comma', $solution[$i]));
因为 implode_comma()
需要一个数组,所以 $solution[$i]
中的每一项也必须是一个数组;但这意味着 $solutions
本身必须是一个三维数组。
我认为您可以将其写在循环中:
$vals = implode(',', $solution[$i]);
$query_land = "INSERT INTO `Sequence` ($cols_land)
VALUES ($vals)
WHERE num_arr='".$solution[$i][0]."'
AND num_arr IN (SELECT num_arr FROM Schedule WHERE num_arr<>'')";
$result_land = execute_query($query_land);
顺便说一句,你应该正确地转义你在 SQL 中使用的变量,但我无法判断你使用的是哪个数据库层,所以我把它留给你。
关于php - 二维数组第i行内爆逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12179145/