Вчера я столкнулся с проблемой.
В основном, у меня был ассоциативный массив некоторых данных со строковыми ключами (содержащими числовые значения, но все же, строки в кавычках), которые нужно было поместить в поле в качестве опций. Я хотел добавить значение заполнителя к опциям поля выбора.
Я попытался использовать array_merge:
$placeholder = "Month";
$source = array
(
'01' => '01 - January',
'02' => '02 - February',
'03' => '03 - March',
'04' => '04 - April',
'05' => '05 - May',
'06' => '06 - June',
'07' => '07 - July',
'08' => '08 - August',
'09' => '09 - September',
'10' => '10 - October',
'11' => '11 - November',
'12' => '12 - December'
);
$source = array_merge(array('' => $placeholder), $source);
И я увидел странные результаты - полученный массив $source
был похож на следующий:
(
'' => 'Month',
'01' => '01 - January',
'02' => '02 - February',
'03' => '03 - March',
'04' => '04 - April',
'05' => '05 - May',
'06' => '06 - June',
'07' => '07 - July',
'08' => '08 - August',
'09' => '09 - September',
0 => '10 - October',
1 => '11 - November',
2 => '12 - December'
);
Обратите внимание, что он начал использовать то, что кажется автоинкрементными целочисленными ключами для октября-декабря по какой-то причине.
Я могу заменить вызов array_merge на следующий:
$source = array('' => $placeholder) + $source;
И массив не переключается и все в порядке, но я не понимаю, что происходит под кулисами в случае array_merge
.
Может ли кто-нибудь объяснить, что происходит с ключами моего массива, когда я использую array_merge
? Спасибо!