2017-09-13 103 views
0

我有一個關聯數組的數組。PHP合併數組,如果他們有相同的鍵值

$array = [ 
    ['report_date' => 'date', 'name' => 'name'], 
    ['report_date' => 'date', 'color' => 'color'] 
]; 

我想通過這個數組排序,如果

$array[x]['report_date'] === $array[y]['report_date'] 

然後我需要執行合併,將返回在這種情況下:

$newArray = [['report_date'=>date,'name'=>name,'color'=>color]] 

我們當然需要考慮到可能有多個數組滿足這個要求,我們也必須將它們合併。

我已經嘗試了一些事情,導致映射和foreach合併,永久處理和最終無法得到它的工作。

任何想法?

+1

_「我試了幾件事情,」 _ - 請分享你試了一下,一起以及一些原始輸入和預期輸出的實例。 –

+1

我最初的建議是重新思考你想要完​​成的事情。當你的解決方案看起來像這樣,通常意味着你要麼完全不瞭解問題,要麼你在一個兔子洞裏徘徊。也許這將有助於https://en.wikipedia.org/wiki/Rubber_duck_debugging – Halfstop

+0

我正在編輯我的問題,但有人回答它與理想的結果。我肯定會讚揚你們的評論,因爲這些建議都是很有說服力的。 –

回答

2

您可以創建一個新的數組,由report_date索引並推值到它:

$out=[]; 
foreach($array as $subarray){ 
    foreach($subarray as $key=>$val){ 
     $out[$subarray['report_date']][$key]=$val; 
    } 
} 

var_dump($out); 
+0

這正是我需要的解決方案。謝謝。 –

+0

沒問題,很高興我能幫到你。 – Steve

相關問題