数组实例--把键相同的数组合并

场景,把键相同的多个数组,合并到键下面的多个数组里面,图一是原数组,图二是我们想要的结果数组

数组实例--把键相同的数组合并_第1张图片
图1,原数组
数组实例--把键相同的数组合并_第2张图片
图22,我们想要的结果

代码

    public function test()
    {
        $arr = [
            [ 1 => [ 1 , 11 ], ],
            [ 1 => [ 11 , 22 ], ],
            [ 1 => [ 3 , 33 ], ],
            [ 2 => [ 2 , 11 ], ],
            [ 2 => [ 2 , 22 ], ],
            [ 3 => [ 3 , 33 ], ],
        ];
            $data = $this->test3($arr);
            dd($arr1);
    }
    public function test3($arr)
    {
        foreach ($arr as $key => $value)
        {
                foreach ($value as $key1 => $value1){
                        $result[$key1][] = $value1;
                }
        }

        return $result;
    }

虽然这个问题很简单,但是我费了好多时间。但是把解决思路做个总结吧。对于以后的思考会有帮助

思路1,我想得到键。取相同的键。第1步测试,我想得到键。那么我们先试试打印$key值。我们发现不是想要的结果

数组实例--把键相同的数组合并_第3张图片
第一步,打印$key值

思路1,第2步测试,我们打印$value看看。发现也不是我们要的结果。但是我们把数组点开后。发现这个$value再遍历一次,即可得到我们想要的键

数组实例--把键相同的数组合并_第4张图片
打印$value

思路1,第三步测试。我们打印$key1,查看下,得到了我们要的键。

数组实例--把键相同的数组合并_第5张图片
打印$key1

思路2,第一步测试.找到了相同的键,我们先把此处键对应的的$value1打印看下吧

数组实例--把键相同的数组合并_第6张图片
打印$value1

思路2结果分析。我们得到了我们想要的值,只是键不是我们想要的。但是键,我们已经在思路1的测试3里面找到了。所以我们可在此处的数组前面再加上我们的键,即可得到我们的结果 $result[$key1][] = $value1;。于是我们就有了test3()函数

    public function test()
    {
        $arr = [
            [ 1 => [ 1 , 11 ], ],
            [ 1 => [ 11 , 22 ], ],
            [ 1 => [ 3 , 33 ], ],
            [ 2 => [ 2 , 11 ], ],
            [ 2 => [ 2 , 22 ], ],
            [ 3 => [ 3 , 33 ], ],
        ];
            $data = $this->test3($arr);
            dd($data);
    }
    public function test3($arr)
    {
        $result = array();
        foreach ($arr as $key => $value)
        {

                foreach ($value as $key1 => $value1){
                        $result[$key1][] = $value1;
                }
        }

        return $result;
    }

思考,

有时候我们想不通的时候,我们可以先把结果自己写出来,然后从结果上,
往上一层层寻找自己需要的信息。一般都可以写出来自己需要的函数

你可能感兴趣的:(数组实例--把键相同的数组合并)