Можно ли добавить к ассоциативному массиву буквальные пары ключ => значение? Я знаю, что array_unshift () работает с числовыми клавишами, но я надеюсь на то, что будет работать с буквальными клавишами.
В качестве примера я бы хотел сделать следующее:
$array1 = array('fruit3'=>'apple', 'fruit4'=>'orange');
$array2 = array('fruit1'=>'cherry', 'fruit2'=>'blueberry');
// prepend magic
$resulting_array = ('fruit1'=>'cherry',
'fruit2'=>'blueberry',
'fruit3'=>'apple',
'fruit4'=>'orange');
php
arrays
associative-array
Колин Брок
источник
источник
Ответ - нет. Вы не можете добавить к ассоциативному массиву пару "ключ-значение".
Однако вы можете создать новый массив, содержащий новую пару «ключ-значение» в начале массива, с помощью оператора объединения
+
. Результатом является совершенно новый массив, а создание нового массива имеет сложность O (n).Синтаксис ниже.
Примечание: не используйте array_merge (). array_merge () перезаписывает ключи и не сохраняет числовые ключи.
источник
В вашей ситуации вы хотите использовать array_merge ():
Чтобы добавить одно значение для ассоциативного массива вместо array_unshift (), снова используйте array_merge ():
источник
@Cletus на высоте. Чтобы добавить, если порядок элементов во входных массивах неоднозначен и вам нужно отсортировать окончательный массив, вы можете захотеть ksort :
источник
ksort
возвращает логическое значение, поэтому приведенное выше должно быть выполнено как два оператора, а не один, например$a = $array1 + $array2; ksort($a);
, в противном случае$resulting_array
будет логическое значение, а не массив, который вы ожидали.Используя тот же метод, что и @mvpetrovich, вы можете использовать сокращенную версию массива, чтобы сократить синтаксис.
Ссылки:
PHP: array_merge ()
PHP: массивы - Руководство
источник