2016-12-16 177 views
0

我有這樣兩個陣列:PHP多維數組合並基於鍵

$array1 = [ 
    '1' => 285.52, 
    '2' => 427.76 
]; 

$array2 = [ 
    '1' => 123.44, 
    '2' => 48.32 
]; 

的鍵上的每個都是用於客戶端的標識,第一個是所欠金額和第二個是量祈禱,我希望實現以下目標:

$mergedArrays = [ 
    '1' => [ 
    'owed' => 285.52, 
    'payed' => 123.44 
    ], 
    '2' => [ 
    'owed' => 427.76, 
    'payed' => 48.32 
    ] 
]; 

我在想,如果有一個PHP函數來做到這一點,我試圖與array_merge_recursive但它只是使的四大元素在一起的數組。

任何幫助將非常感激。

+1

傳統循環的問題是什麼? – 2016-12-16 18:13:29

+1

沒有嵌入/鏈接一些像[array_column](http://php.net/array_column)與[array_combine](http://php.net/array_combine)等類似內置函數的鏈接。 –

+0

@HillaryClintonEmailRemover我不知道,我認爲這是更高效的性能明智的做它使用內置的功能,感謝tho – DSB

回答

1

根據按鍵

foreach($array1 as $key => $val) { 
    $mergedArrays[$key] = array('owed' => $val, 'payed' => $array2[$key]); 
} 

sample

+0

他說非傳統 – 2016-12-16 18:17:12

+0

沒有什麼不是傳統的,因爲這個 – Fabio

+0

函數內置,我想我不知道爲什麼他想要使用一些複雜的事情來做簡單的任務 – 2016-12-16 18:19:25

1
$array1 = [ 
    '1' => 285.52, 
    '2' => 427.76 
]; 

$array2 = [ 
    '1' => 123.44, 
    '2' => 48.32 
]; 

$final_arr = array_map(function($a1, $a2) { 
    return array(
     'owed' => $a1, 
     'paid' => $a2 
    ); 
}, $array1, $array2); 

$final_arr = array_combine(array_keys($array1), $final_arr); 

var_dump($final_arr); 

基於註釋可以循環第一陣列中和合並的第二次,看來你正在尋找內置PHP函數爲您完成任務而不是傳統循環。但是Fabio提供的循環方法是最簡單的一種,您可以在沒有任何其他複雜方法的情況下使用。我盡我所能爲您提供使用核心PHP函數的解決方案。希望你對此感到滿意!