美文网首页
两个二维数组 关联一对一合并成一个数组 两种解法

两个二维数组 关联一对一合并成一个数组 两种解法

作者: dongdog | 来源:发表于2020-06-15 14:53 被阅读0次

    方案一

        /**
         * 一对一关联数组合并
         *
         * @param        $arr1
         * @param        $arr2
         * @param string $arr1_key
         * @param string $arr2_key
         *
         * @return mixed
         */
        private static function peerMerge($arr1, $arr2, $arr1_key = 'pid', $arr2_key = 'id')
        {
            //父级
            foreach ($arr1 as $i => $item1) {
                //子级
                foreach ($arr2 as $j => $item2) {
                    //父级与子级匹配
                    if ($item1[$arr1_key] == $item2[$arr2_key]) {
                        //去除子级关联ID
                        unset($item2[$arr2_key]);
                        $arr1[$i] = array_merge($item1, $item2);
                        //匹配完成
                        continue;
                    }
                }
                //          unset($arr1[$i][$arr1_key]);
            }
            return $arr1;
        }
    

    方案二

        /**
         * 一对一关联数组合并
         *
         * @param        $arr1
         * @param        $arr2
         * @param string $arr1_key
         * @param string $arr2_key
         *
         * @return mixed
         */
        private static function peerMerge2($arr1, $arr2, $arr1_key = 'pid', $arr2_key = 'id')
        {
            //获取子级关联的数组id列
            $arr2_key_index = array_column($arr2, $arr2_key);
            //父级
            foreach ($arr1 as $i => $item1) {
                //找到第二个数组的索引
                $arr2_item_key = array_search($item1[$arr1_key], $arr2_key_index);
                //去除子级关联ID
                unset($arr2[$arr2_item_key][$arr2_key]);
                //合并数组
                $arr1[$i] = array_merge($arr1[$i], $arr2[$arr2_item_key]);
            }
            return $arr1;
    
        }
    

    相关文章

      网友评论

          本文标题:两个二维数组 关联一对一合并成一个数组 两种解法

          本文链接:https://www.haomeiwen.com/subject/rbacxktx.html