2017-02-01 75 views
0

我嘗試合併兩個數組,其中密鑰相同。PHP數組合並使用相同的密鑰

這是我的數組:

[username] => Array 
    (
     [3805120] => 5 
     [3805121] => 7 
    ) 

[login] => Array 
    (
     [3805120] => 9 
     [3805121] => 11 
    ) 

我需要的是這樣的:

[3805120] => Array 
    (
     [0] => 5 
     [1] => 9 
    ) 

[3805121] => Array 
    (
     [0] => 7 
     [1] => 11 
    ) 
+0

究竟是什麼你有沒有試過,它是如何失敗? – jeroen

+0

我嘗試array_replace_recursive和array_merge_recursive但沒有成功。 – didsun

+0

沒有一種神奇的PHP函數可以直觀地理解數組的結構並識別想要如何改變它;你實際上不得不寫一點代碼來自己做這個 –

回答

0

很簡單。您需要一個嵌套循環,將子數組的鍵設置爲新數組的鍵,並使用[]以便新值以自動增加值[0,1,... n]「添加」到數組中。

[用戶名] =>數組 ( [3805120] => 5 [3805121] => 7 )

[登錄] =>數組 ( [3805120] => 9 [3805121] => 11 )

// $array is the original array 
$newArray = array(); 

foreach($array as $key => $subarray){ 
    //key: username, login 
    foreach($subarray as $j => $k){ 
    //j: 3805120, 3805121 
    //k: 5,7,9,11 
    $newArray[$j][] = $k; 
    //1st round: $newArray[3805120][0] = 5, $newArray[3805121][0] = 7 
    //2nd round: $newArray[3805120][1] = 9, $newArray[3805121][1] = 11 
    } 
} 

var_dump($newArray); 

輸出:

陣列(2){[3805120] =>陣列(2){ [0] => 串(1) 「5」 [1] => 串(1) 「9」 } [3805121] =>陣列(2){ [0] => 串(1) 「7」 [1] => 串(2) 「11」}}

+0

感謝隊友。這工作篦! – didsun

0

嘗試:

$array1 = array('0' => 5, '1' => 9); 
$array2 = array('0' => 10, '1' => 3); 
$result =array_merge_recursive($array1,$array2); 

print_r($result);