2014-02-19 88 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);' –