我有一些陣這樣的分組: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