Как поставить другие элементы из двух массивов рядом с аналогичными в PHP

У меня есть два массива:

$a1 = array( array('fisrtname' => 'john', 'lastname' => 'smith', 'c1' => 10), array('fisrtname' => 'jane', 'lastname' => 'smith', 'c1' => 20), ... ); $a2 = = array( array('fisrtname' => 'john', 'lastname' => 'smith', 'c2' => 40), array('fisrtname' => 'jane', 'lastname' => 'smith', 'c2' => 50), ... ); 

Мне нужно объединить эти два:

 $a3 = = array( array('fisrtname' => 'john', 'lastname' => 'smith', 'c1' => 10, 'c2' => 40), array('fisrtname' => 'jane', 'lastname' => 'smith', 'c1' => 20, 'c2' => 50), ... ); 

Как я могу сделать это с помощью PHP и меньше кода?

Функция, которую вы ищете, вероятно, всего лишь один вызов функции: array_replace_recursive ()

 $a1 = array( array('fisrtname' => 'john', 'lastname' => 'smith', 'c1' => 10), array('fisrtname' => 'jane', 'lastname' => 'smith', 'c1' => 20), ); $a2 = array( array('fisrtname' => 'john', 'lastname' => 'smith', 'c2' => 40), array('fisrtname' => 'jane', 'lastname' => 'smith', 'c2' => 50), ); $result = array_replace_recursive($a1, $a2); var_dump($result); 

который дает:

 array(2) { [0]=> array(4) { ["fisrtname"]=> string(4) "john" ["lastname"]=> string(5) "smith" ["c1"]=> int(10) ["c2"]=> int(40) } [1]=> array(4) { ["fisrtname"]=> string(4) "jane" ["lastname"]=> string(5) "smith" ["c1"]=> int(20) ["c2"]=> int(50) } } 

Для этого вы можете использовать функции array_map и array_merge .

$a3 = array_map("array_merge",$a1, $a2);

Если длина массива a1 и a2 одинакова, вы можете использовать следующий код:

 <?php $a1 = array( array('fisrtname' => 'john', 'lastname' => 'smith', 'c1' => 10), array('fisrtname' => 'jane', 'lastname' => 'smith', 'c1' => 20) ); $a2 = array( array('fisrtname' => 'john', 'lastname' => 'smith', 'c2' => 40), array('fisrtname' => 'jane', 'lastname' => 'smith', 'c2' => 50) ); for ($i=0; $i < count($a1); $i++) { $a3[$i] = array_merge($a1[$i],$a2[$i]); $a3[$i] = array_unique($a3[$i]); } var_dump($a3); ?>