是否有一个内置的php函数允许我根据匹配的键设置数组的值?也许我最近写了太多的SQL,但我希望我可以执行以下逻辑,而不像下面这样写出嵌套的foreach数组:
foreach($array1 AS $k1 => $a1) {
foreach($array2 AS $a2) {
if($a1['id'] == $a2['id']) {
$array[$k1]['new_key'] = $a2['value'];
}
}
}
有更好的方法吗?在SQL逻辑中,它应该是"SET array1"。new_key = x WHERE array1。Id = array2.id"。再一次,我最近写了太多的SQL:S
当我需要这样做时,我使用一个函数首先通过id映射一个数组的值:
function convertArrayToMap(&$list, $attribute='id') {
$result = array();
foreach ($list as &$item) {
if (is_array($item) && array_key_exists($attribute, $item)) {
$result[$item[$attribute]] = &$item;
}
}
return $result;
}
$map = convertArrayToMap($array1);
然后遍历另一个数组并赋值:
foreach ($array2 AS $a2) {
$id = $a2['id'];
$map[$id]['new_key'] = $a2['value'];
}
这是更少的循环,即使是一次传递,这是方便以后进一步的操作。
这个很好,很正确
foreach(&$array1 AS &$a1) {
foreach($array2 AS $a2) {
if($a1['id'] == $a2['id']) {
$a1['new_key'] = $a2['value'];
}
}
}