加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP数组 – ‘set where key =?’类型功能?

发布时间:2020-12-13 16:22:08 所属栏目:PHP教程 来源:网络整理
导读:是否有内置的php函数,允许我根据匹配的键设置数组的值?也许我最近写了太多的SQL,但我希望我可以执行以下逻辑而无需写出嵌套的foreach数组,如下所示: foreach($array1 AS $k1 = $a1) { foreach($array2 AS $a2) { if($a1['id'] == $a2['id']) { $array[$k1]
是否有内置的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'];
}

即使是一次通过,这总体上也较少,并且它将来可以方便进一步操作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读