$arr=array(array('id'=>1,'user_name'=>'test1'),array('id'=>2,'user_name'=>'test2'),array('id'=>3,'user_name'=>'test3'));$arr2=array(array('id'=>1,'shop_name'=>'shop1'),array('id'=>5,'shop_name'=>'shop2'),array('id'=>3,'shop_name'=>'shop3'));怎么根据2个数组id相同的一维数组,将$arr2的shop_name添加到$arr,如果没有相同的id,shop_name为空,形成如下数组:$good_arr=array(array('id'=>1,'user_name'=>'test1','shop_name'=>'shop1'),array('id'=>2,'user_name'=>'test2','shop_name'=>''),array('id'=>3,'user_name'=>'test3','shop_name'=>'shop3'));我的方案:有更好的吗?O(∩_∩)O谢谢/*foreach($arras$key=>&$value){$value['shop_name']='';}unset($value);*/foreach($arras$k2=>&$v2){$v2['shop_name']='';foreach($arr2as$k=>$v){if($v2['id']==$v['id']){$v2['shop_name']=$v['shop_name'];}}}print_r($arr);
2 回答
汪汪一只猫
TA贡献1898条经验 获得超8个赞
functionfilter($item){returncount($item)==3?$item:false;}$newArr=array_filter(array_merge($arr,$arr2),'filter');题主实在不好意思,上面这个回答我弄错了array_merge的用法,现在重写一个,已本机测试:$tempArr=array();foreach($arr2as$item)$tempArr[$item['id']]=$item['shop_name'];foreach($arras$k=>$v){if(array_key_exists($v['id'],$tempArr)){$arr[$k]['shop_name']=$tempArr[$v['id']];}else{$arr[$k]['shop_name']='';}}$newArr=$arr;btw,我以前也喜欢写嵌套循环,因为逻辑比较简单,但是自从@公子指正后,我已经开始尽量避免这种效率极低的写法,希望答案能帮到题主!:)
添加回答
举报
0/150
提交
取消
