Я пытаюсь добавить элемент в начало ассоциативного массива. Я решил, что лучший способ сделать это - использовать array_merge, но у меня есть некоторые странные последствия. Я получаю id и Name продуктов из базы данных mysql, и она возвращается в виде ассоциативного массива, например, (не фактические данные возвращаются, а примеры данных для этого вопроса, представляющие, как эти данные выглядят приблизительно):
$products = array (1 => 'Product 1', 42 => 'Product 42', 100 => 'Product 100');
это отправляется помощнику html для создания раскрывающегося списка, связывающего ключ со значением, и значение элемента массива устанавливается в качестве текста в раскрывающемся элементе управления select. Мне нужно, чтобы первый элемент был что-то вроде «Пожалуйста, выберите» с ключом 0, поэтому я сделал это:
$products = array_merge(array(0 => "Select a product" ), $products);
Полученный массив выглядит так:
array(
0 => 'Select a product',
1 => 'Product 1',
2 => 'Product 42',
3 => 'Product 100'
);
когда я действительно хотел не потерять ключи ассоциативного массива. Мне сказали, что вы можете правильно использовать array_merge с ассоциативными массивами так, как я пытался, однако я считаю, что мои ключи ints , что он не обрабатывает массив как истинный ассоциативный массив и сжимает их как проиллюстрировано выше.
Вопрос в том, почему функция array_merge меняет ключи элементов? я могу удержать это от этого? ИЛИ есть ли другой способ выполнить то, что я пытаюсь сделать, добавить новый элемент в начале массива?