Как связать два массива в PHP
У меня есть два массива, таких как A & B .
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");
Все эти запросы выполняются за один раз.
4 ответов:
Просто замкните em и используйте индекс для второго массива
$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вместоПримечание: всегда бежать
Используя
array_combine(), Вы можете создать новый массив, указав один массив в качестве ключей, а другой-в качестве значений в новом массиве. Тогда остается только зациклить полученный массив и выполнить запросы. Поскольку теперь у вас есть один массив, используйте циклforeachи используйте ключи (в этом случае все значения из$a) и значения (в этом случае все значения из$b) в качестве значений, которые вы устанавливаете.Это предполагает, что количество записей в обоих массивах всегда одинаково. Если они не одного и того же происхождения size,
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). APImysql_*был устаревшим в PHP 5.6 и полностью удален в PHP7.
Предполагая, что длина обоих массивов одинакова,
<?php $A=[1,2,3,4]; $B=[10,20,30,40]; for($i=0;$i<sizeof($A);$i++){ mysql_query("update table set corr='".$A[$i]."' WHERE id='".$B[$i]."'"); } ?>
$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); }
Comments