Доброго времени суток.
Сегодня отлавливал баг, и обнаружил неприятную особенность работы функции array_merge_recursive с числовыми индексами.
Пример:
$test1 = [
'test' => [
5 => 'test5'
]
];
$test2 = [
'test' => [
10 => 'test10'
]
];
var_dump(array_merge_recursive($test1, $test2));
Результат:
array(1) {
'test' =>
array(2) {
[5] =>
string(5) "test5"
[6] =>
string(6) "test10"
}
}
т.е. php не сохранил индекс массива, а просто добавил в конец.
Если в качестве ключей использовать строковые значения, то код работает, как и ожидается (ключи сохраняются).