我永远不会试图去战胜一个纯傻逼,因为他会用他丰富的经验来打败我...

11月 13

php数组中两个数组合并

2017-11-16 10:20:49更新

    今早,看到代码的时候,突然想起这种的 array_merge 的函数不是没用,而是我自己使用错误了,array_merge 不是引用赋值,而我之前是给他一个空数组,在给$data,所以,肯定是不成功的。。

    其实代码很简单,所以,改成了每次循环想结果数组里合并之。代码如下。效果图也就不贴了,是第二张图的效果,也是理想效果。


这两天做项目的时候遇到一个问题,数据是从数据库取的,所以,返回的数组的key名,就是数据库的字段名。

而数据呢,又是在数组的key名下面的数据,所以结构就类似下面这样:


最后想要的结果是:

起初,是想要 array_merge 来实现完成的,因为这个函数就是来做数组合并的发现。最后发现,如果想使用这个函数,就必须把数组里面的每个元素分开,所以,也就没打算使用这个方法了。

后面,使用 foreach + array_merge 来实现的时候发现 key 如果相关的话,前面的会被覆盖掉。

然后,想到了一个取巧的办法,就是先确定好一个数组【0】,然后在后面再接一个数组。然后,把数组放进这个数组里, 这样的话key,也不会存在重复了,而是会自动递增。

最后的效果就是,有一个key【0】的数组,有点不美观(优化的话只要用array_values 把数据取出来,我这里因为不需要这么优化,就不做了。

    

        $data = [];

        foreach($goodsMessage as $item) {

            $data = array_merge($data,$item['goodsMessage']);
            
        }


附上结果图:

上完成代码:

 $goodsMessage = [
            0 => [
                'goodsMessage' => [
                    0 => [
                        'id' => 0,
                        'age' => 0
                    ],
                    1 => [
                        'id' => 4,
                        'age' => 4
                    ],
                ]
            ],
            1 => [
                'goodsMessage' => [
                    0 => [
                        'id' => 1,
                        'age' => 1
                    ],
                    1 => [
                        'id' => 2,
                        'age' => 2
                    ],
                    2 => [
                        'id' => 3,
                        'age' => 3
                    ],
                ]
            ],
        ];

        foreach($goodsMessage as $item) {
            foreach ($item['goodsMessage'] as $v){
                    $data[0][] = $v;
            }
        }

 

发表评论

邮箱地址不会被公开。 必填项已用*标注