我有一些阵这样的分组:PHP:合并多维数组,由某些关键
array(
'id' => 1,
'title' => 'title1',
'name' => 'name1',
'count' => 2
)
array(
'id' => 1,
'title' => 'title1',
'name' => 'name2',
'count' => 3
)
array(
'id' => 2,
'title' => 'title2',
'name' => 'name1',
'count' => 2
)
我想将它们合并,以便与同id
和title
阵列将被合并。结果应该是这样的:
array(
'id' => 1,
'title' => 'title1',
'name' => array('name1', 'name2'),
'count' => array(2, 3)
)
array(
'id' => 2,
'title' => 'title2',
'name' => 'name1',
'count' => 2
)
或者
array(
'id' => 1,
'title' => 'title1',
'name' => 'name1, name2',
'count' => '2, 3'
)
array(
'id' => 2,
'title' => 'title2',
'name' => 'name1',
'count' => 2
)
或者
array(
'id' => 1,
'title' => 'title1',
'name1' => 2,
'name2' => 3
)
array(
'id' => 2,
'title' => 'title2',
'name1' => 2
)
array_merge_recursive()
将扩大,而不是分组所有的钥匙。 (全阵列还可以是对象的形式。)
原来的问题
其实它是从MySQL数据库,在那里我用COUNT
,GROUP BY
和JOIN
产生上述三个数组查询结果。由于所有MySQL查询都具有单行结构,并且查询结果不能包含子组类型,因此某些结果行具有相同的id
和title
。现在我想用PHP处理这些结果。
如果您还有其他更好的点子,也请写出来。
那么,为什么不使用SQL来获得期望的结果? (按两列分组?) – 2014-09-02 08:20:09
您可以使用GROUP_CONCAT在MySQL中执行此操作。看到这个问题:http://stackoverflow.com/questions/9861298/merge-multiple-mysql-rows-having-same-id – sjy 2014-09-02 08:20:33
@AlmaDo按两列分组?那么'count'列是COUNT()的结果,'name'列是'COALESCE()'和两个'JOIN'语句的结果。我不能直接在'COUNT'的结果上使用'GROUP_CONCAT()'。 – Melkor 2014-09-02 08:40:31