$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'
    )
);
1. foreach($arr as $k2 =>&$v2) {

$v2['shop_name']='';

foreach($arr2 as $k =>$v) {

if($v2['id'] == $v['id']) {

$v2['shop_name'] = $v['shop_name'];

}

}

}

print_r($arr);

2. 

$tempArr = array();
foreach($arr2 as $item) 
    $tempArr[$item['id']] = $item['shop_name'];
foreach($arr as $k => $v) {
    if(array_key_exists($v['id'], $tempArr)) { 
        $arr[$k]['shop_name'] = $tempArr[$v['id']];
    } else {
        $arr[$k]['shop_name'] = '';
    }
}
$newArr = $arr;

3.

$tmp = '';
foreach ($arr2 as $k) { $tmp[$k['id']] = $k; }
foreach ($arr as &$v) {
    $sn = $tmp[$v['id']]['shop_name'];
    $sn = $sn ? $sn :'';
    $v['shop_name'] = $sn;
}
var_dump($arr);
?>
4.

$shop_name = array_column($arr2, 'shop_name', 'id');//方便减少foreach

foreach($arr as $key => $item) {
    $exist = array_key_exists($item['id'], $shop_name);
    $arr[$key]['shop_name'] = $exist ? $shop_name[$item['id']] : '';
}
print_r($arr);

php将两个数组相同的key合并到一个数组的更多相关文章

  1. PHP 获取数组随意下标key的上一个prev和下一个next下标值

    PHP 获取数组随意下标key的上一个prev和下一个next下标值 <? php $xoops[1] = '小'; $xoops[2] = '孩'; $xoops[3] = '子'; $xoo ...

  2. 手写面试编程题- 数组去重 深拷贝 获取文本节点 设置奇数偶数背景色 JS中检测变量为string类型的方法 第6题闭包 将两个数组合并为一个数组 怎样添加、移除、移动、复制、创建和查找节点? 继承 对一个数组实现随机排序 让元素水平 垂直居中的三种方式 通过jQuery的extend方法实现深拷贝

    第1题==>实现数组去重 通过 new Set(数组名) // var arr = [12, 12, 3, 4, 5, 4, 5, 6, 6]; // var newarr1 = new Set ...

  3. 表单配置项写法,表单写成JSON数组套对象,一行是一个数组单位,一列是一个对象单位,然后再写一个公共组件读取这个配置,循环加载slot,外层载入slot的自定义部分,比如input select等,这种写法就是把组件嵌套改为配置方式

    表单配置项写法,表单写成JSON数组套对象,一行是一个数组单位,一列是一个对象单位,然后再写一个公共组件读取这个配置,循环加载slot,外层载入slot的自定义部分,比如input select等,这 ...

  4. C#把某个数组的一部分复制到另一个数组中的两种方法:Buffer.BlockCopy和Array.Copy

    static void Main(string[] args) { , , , , , }; ;//目标数组大小 int int_size = sizeof(int);//用于获取值类型的字节大小. ...

  5. js数组合并(一个数组添加到另一个数组里面)方法

    js定义两个数组. var arrA=[1,2,3]; var arrB=[4,5,6]; 要实现[1,2,3,4,5,6],如果直接arrA.push(arrB); 则arrB只会作为了arrA的一 ...

  6. 【es6】将2个数组合并为一个数组

    //第一种 一个数组中的值为key 一个数组中的值为value let arr1 = ['内存','颜色','尺寸']; let arr2 = [1,2,3]; let temp = arr1.map ...

  7. 数组相同的key组成新的数组

    function dataFunc (data){ var b = {}; $.each(data, function (i,v){ var g = v[key], //将评价人相同的拿出来组成一个新 ...

  8. 牛客网:将两个单调递增的链表合并为一个单调递增的链表-Python实现-两种方法讲解

    方法一和方法二的执行效率,可以大致的计算时间复杂度加以对比,方法一优于方法二   1. 方法一: 思路: 1. 新创建一个链表节点头,假设这里就叫 head3: 2. 因为另外两个链表都为单调递增,所 ...

  9. 两个SQL查询,横向合并为一个查询结果

    第一条sql: select unit,count(*)as number from archives_management group by unit 第二条sql: select fine_uni ...

随机推荐

  1. 博客搬家啦! -----> http://ronghaopger.github.io/

    新地方: http://ronghaopger.github.io/ 以后这里就不更新了,感谢博客园!

  2. 【转】A* A星 算法 C语言 实现代码

    http://blog.csdn.net/shanshanpt/article/details/8977512 关于A*算法,很早就想写点什么,可是貌似天天在忙活着什么,可事实又没有做什么,真是浮躁啊 ...

  3. [SVG] Add an SVG as an Embedded Background Image

    Learn how to set an elements background image to embedded SVG. This method has an added benefit of n ...

  4. Redis+Mysql模式和内存+硬盘模式的异同

    http://www.open-open.com/lib/view/open1346029825942.html 学习任何新知识,都是一个循序渐进的过程,从刚开始的懵懂无知,到简单熟悉,然后突然的彻悟 ...

  5. 【NOIP2012提高组】开车旅行 倍增

    题目分析 朴素的做法就是预处理下一个目的地,然后跑模拟,超时. 本题最重要的考点是倍增优化.设$fa[i][j]$表示a从i出发行驶$2^j$“次”后行驶的路程,$fb[i][j]$表示从i出发行驶$ ...

  6. 【t006】三角形分形描绘问题

    Time Limit: 1 second Memory Limit: 50 MB [问题描述] 分形是以多种概念和方法相互冲击融合为特征的图形.分形所呈现的无穷玄机和美感引发人们去探索.分形使人们觉悟 ...

  7. maven Java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet

    如果你可以确认你的maven Dependencies中已经导入了如下的jar包,那么你就要检查下Deployment Assembly 选中项目 alt+enter,然后查看maven依赖有没有被添 ...

  8. 支付宝接口(扫码支付的原理)使用文档说明 支付宝异步通知(notify_url)与return_url

    支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url. 现支付宝的通知有两类. A服务器通知,对应的参数为notify_url,支付宝通知使用POST方式 B页面跳转通 ...

  9. 华为云软件开发云:容器DevOps,原来如此简单!

    当开发团队把代码提交到 Git 应用仓库的那一刻,他们心里在想什么? 祈祷没有bug?渴望回家补觉?产品经理Go Die? 对,也不对.因为这只是最终发布万里长征的一小步,接下来要面对测试环境.生产环 ...

  10. 【25.23%】【codeforces 731C】Socks

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...