php - 两个二维数组怎么根据相同字段结合

查看:110
本文介绍了php - 两个二维数组怎么根据相同字段结合的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

现在有两个二维数组,
array1(

array(pid=>1,pname=>名字1),
array(pid=>2,pname=>名字2),

);
array2(

array(pid=>1,name=>子名01),
array(pid=>1,name=>子名02),
array(pid=>1,name=>子名03),
array(pid=>2,name=>子名04),
array(pid=>2,name=>子名05)

);
除了两次foreach循环外,怎么用php方法,将两个数组结合,得出
array(

array(pid=>1,pname=>名字1,name=>'子名01,子名02,子名03'),
array(pid=>2,pname=>名字2,name=>'子名04,子名05)

);
这种格式的数组。
简单的问法就是怎么不在两次foreach循环的情况下,根据两个数组中的相同字段的交集。php上得leftjoin

解决方案

        $arr1 = array(
            array('pid'=>1,'pname'=>'名字1'),
            array('pid'=>2,'pname'=>'名字2')
        );
        $arr2 = array(
            array('pid'=>1,'name'=>'子名01'),
            array('pid'=>1,'name'=>'子名02'),
            array('pid'=>1,'name'=>'子名03'),
            array('pid'=>2,'name'=>'子名04'),
            array('pid'=>2,'name'=>'子名05')
        );

        $temp = [];
        foreach($arr2 as &$v){
            $temp[$v['pid']]['name'] .= $v['name'].',';
            $temp[$v['pid']]['pid'] = $v['pid'];
        }

        foreach($arr1 as &$item){
            if($temp[$item['pid']]) {
                $item = array_merge($item, $temp[$item['pid']]);
                $item['name'] = trim($item['name'],',');
            }else{
                $item['name'] = '';
            }
        }
        var_dump($arr1);

这篇关于php - 两个二维数组怎么根据相同字段结合的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆