为了账号安全,请及时绑定邮箱和手机立即绑定

php将两个数组相同的key合并到一个数组

php将两个数组相同的key合并到一个数组

梵蒂冈之花 2019-04-08 11:19:09
$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,我以前也喜欢写嵌套循环,因为逻辑比较简单,但是自从@公子指正后,我已经开始尽量避免这种效率极低的写法,希望答案能帮到题主!:)
                            
查看完整回答
反对 回复 2019-04-08
  • 2 回答
  • 0 关注
  • 428 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号