set where key=?'函数类型


PHP a 'set where key=?' type function?

是否有一个内置的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'];
         }
    }
}