Вчера у меня был головной убор.
По сути, у меня был ассоциативный массив некоторых данных со строковыми ключами (содержащий числовые значения, но все же строки в кавычках), которые можно было указать в поле <select>
в качестве параметров. Я хотел добавить значение заполнителя к параметрам окна выбора.
Я попытался использовать 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
? Спасибо!