Объединить массив с теми же ключами, array_merge_recursive не работает должным образом

У меня есть два массива с идентификаторами ключей и некоторые поля, и я хотел бы объединить их, но я не понимаю, почему это не работает, вот мой пример кода:

$Podcasts1 = array("1234" => array('title' => "myTitle", "type" => "myType"));
$Podcast2 = array("1234" => array("content" => "myContent"));
$podcasts = array_merge_recursive($Podcasts1, $Podcast2);
var_dump($Podcasts1, $Podcast2, $podcasts);

Есть результат:

array:1 [▼
1234 => array:2 [▼
"title" => "myTitle""type" => "myType"]
]
array:1 [▼
1234 => array:1 [▼
"content" => "myContent"]
]
array:2 [▼
0 => array:2 [▼
"title" => "myTitle""type" => "myType"]
1 => array:1 [▼
"content" => "myContent"]
]

И есть результат, который я хотел бы получить:

array:[
1234 => array(
"title" => "myTitle""type" => "myType""content" => "myContent")
]

Я не понимаю, почему код на PHP.net работает, а мой — нет

Код:

$ar1 = array("color" => array("favorite" => "red"), 5);
$ar2 = array(10, "color" => array("favorite" => "green", "blue"));
$result = array_merge_recursive($ar1, $ar2);

Результат:

Array
(
[color] => Array
(
[favorite] => Array
(
[0] => red
[1] => green
)

[0] => blue
)

[0] => 5
[1] => 10
)

1

Решение

Измените ключ 1234 на строку как

 $Podcasts1 = array('a' => array('title' => "myTitle", "type" => "myType"));
$Podcast2 = array('a' => array("content" => "myContent"));
$podcasts = array_merge_recursive($Podcasts1, $Podcast2);
var_dump($Podcasts1, $Podcast2, $podcasts);

array_merge_recursive работает на строковых ключах.

0

Другие решения

Это не будет работать для цифровой клавиши, как сказано в описании функции

Если входные массивы имеют одинаковые строковые ключи, то значения этих ключей объединяются в массив, и это делается рекурсивно, поэтому, если одно из значений является самим массивом, функция объединит его с соответствующей записью в другом массиве тоже. Однако, если массивы имеют одинаковый цифровой ключ, более позднее значение не будет перезаписывать исходное значение, а будет добавлено.

Ссылка

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector