2014-02-19 86 views
0

從其他陣列取值合併陣列我有兩個數組這樣如何在PHP

$array1 = ['name'=>'john', 'age'=> 10] 
$array2 = ['name' => 'johnKaff', 'class' => 'User', 'option'=array('c1', 'c2')] 

我想要的結果是

$array2 = ['name' => 'john', 'class' => 'User', 'option'=array('c1', 'c2'), 'age'=> 10] 

$array1的值,如果有相同的應始終優先在$array2關鍵

+1

你試過['array_merge'(HTTP://us1.php。淨/ array_merge)? – quickshiftin

回答

1

使用array_replace()

$result = array_replace($array2, $array1); 

其中:

  • $array1 - 的元件,其中被替換的陣列。
  • $array2 - 將從中提取元素的數組。

輸出:

Array 
(
    [name] => john 
    [class] => User 
    [option] => Array 
     (
      [0] => c1 
      [1] => c2 
     ) 

    [age] => 10 
) 
+0

這和array_merge – user3147180

+0

'array_replace()'之間的差異是什麼?用以下所有數組中的相同值替換第一個數組的值。 'array_merge()'將一個或多個數組的元素合併在一起,以便將一個數組的值附加到前一個數組的末尾並返回結果數組。 –

+0

@ user3147180:基本上,'array_replace()'做**替換**,而'array_merge()** **在第一個末尾合併**第二個數組。 –

1

使用+ operator

$combined_array = $array1 + $array2; 

陣列列出第一勝當每個陣列具有相同的鍵的元素。

例子:

$array1 = array('name'=>'john', 'age'=> 10); 
$array2 = array('name' => 'johnKaff', 'class' => 'User', 'option'=>array('c1', 'c2')); 
$combined_array = $array1 + $array2; 
var_dump($combined_array); 

輸出:

array(4) { 
    ["name"]=> 
     string(4) "john" 
    ["age"]=> 
     int(10) 
    ["class"]=> 
     string(4) "User" 
    ["option"]=> 
     array(2) { 
     [0]=> 
      string(2) "c1" 
     [1]=> 
      string(2) "c2" 
     } 
} 
0

你應該使用array_merge

array_merge($array1, $array2); 
+0

第二個關聯數組中的相同鍵將覆蓋前一個。以相反的順序使用參數:'array_merge($ array2,$ array1);' –