Как я сказал в комментарии «вы можете использовать array_replace_recursive
с array_combine
». Предположим, у вас есть эти два массива:
$array1 = array([
'id'=>1,
"firstName"=> "paul1",
], [
'id'=>3,
"firstName"=> "paul `has no last name`3",
], [
'id'=>2,
"firstName"=> "paul2",
],);
$array2 = array([
'id'=>1,
"lastName"=> "jackson1",
], [
'id'=>2,
"lastName"=> "jackson2",
], [
'id'=>5,
"lastName"=> "jackson `has no first name`5",
],);
, поэтому вы можете просто объединить их по идентификатору, например:
$marged = array_replace_recursive(
array_combine(array_column($array1, "id"), $array1),
array_combine(array_column($array2, "id"), $array2)
)
ПРИМЕЧАНИЕ: вы можете изменить «id» с помощью ключа, который вам нужен
, поэтому ВЫВОД должен быть таким:
array:4 [▼
1 => array:3 [▼
"id" => 1
"firstName" => "paul1"
"lastName" => "jackson1"
]
3 => array:2 [▼
"id" => 3
"firstName" => "has no last name3"
]
2 => array:3 [▼
"id" => 2
"firstName" => "paul2"
"lastName" => "jackson2"
]
5 => array:2 [▼
"id" => 5
"lastName" => "jackson5"
]
]