2014-02-19 3 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

Что такое diff между этим и 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);' –

Смежные вопросы