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; } }
发表评论