如何在PHP中关联两个数组

3
我有两个数组,分别是AB
A=[1,2,3,4] , B=[10,20,30,40]

我希望以这样的方式执行mysql更新查询。


$abc1=mysql_query("update table set corr='1' WHERE id=10");
$abc1=mysql_query("update table set corr='2' WHERE id=20");
$abc1=mysql_query("update table set corr='3' WHERE id=30");
$abc1=mysql_query("update table set corr='4' WHERE id=40");

所有的查询在一次操作中执行。


使用 array_combine 函数创建数组,然后遍历它并进行更新。 - Sahil Gulati
你想要合并它们吗? - Alberto Martínez
能否请您用代码为我定义一下? - sam
@agam 是的,始终是相同的计数。 - sam
动态绑定数值也是你可以采取的一种替代方法。参见此处 - Rahul
显示剩余3条评论
3个回答

1
只需循环并使用索引来操作第二个数组。
$as=[1,2,3,4] , $bs=[10,20,30,40];
foreach ($as as $key=>$val) {
    $abc1=mysql_query("update table set corr='".$val."' WHERE id=".$bs[$key]);
}

注意:您不应该使用mysql,请改用mysqli
注意:始终进行转义。

1
使用 array_combine(),您可以创建一个新数组,在新数组中指定一个数组作为键,另一个数组作为值。然后只需循环处理结果数组并执行查询即可。由于现在只有一个数组,请使用 foreach 循环,并使用键(在本例中,来自 $a 的所有值)和值(在本例中,来自 $b 的所有值)作为要设置的值。
这假定两个数组中的条目数量始终相同。如果它们的大小不同,则 array_combine() 将返回 false - 您可以在执行查询之前使用该值进行检查。
$a = [1, 2, 3, 4];
$b = [10, 20, 30, 40];
$result = array_combine($a, $b);

foreach ($result as $k=>$v) {
    mysql_query("UPDATE table SET corr='$k' WHERE id = '$v'");
}

话虽如此,这个查询容易受到SQL注入攻击,您应该升级到支持带有占位符的参数化查询的新API(mysqli_*或PDO)。mysql_* API在PHP 5.6中已弃用,并在PHP7中完全删除。


你不觉得数组合并会导致更多的迭代吗?我们可以像Mazz说的那样使用单个循环来解决问题。 - Agam Banga
不是 array_merge(),而是 array_combine()。它从两个数组中创建一个新的数组,其中一个是键,另一个是值。请阅读文档。结果数组的长度将与这两个数组相同,在本例中为4。 - Qirel

0
$a=[1,2,3,4];$b=[10,20,30,40];
$res=array_combine($a, $b );
foreach ($res as $key => $value) {
    $abc1=mysql_query("update table set corr='".$key."' WHERE id=".$value);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接