PHP добавляет ассоциативный массив с буквальными ключами?

Можно ли добавить ассоциативный массив с буквальными ключами = > парами значений? Я знаю, что 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');

Ответ 1

Не можете ли вы просто сделать:

$resulting_array = $array2 + $array1;

?

Ответ 2

Ответ - нет. Вы не можете добавить ассоциативный массив с парой ключ-значение.

Однако вы можете создать новый массив, содержащий новую пару ключ-значение в начале массива с оператором объединения +. Результатом является совершенно новый массив, хотя и создание нового массива имеет сложность O (n).

Синтаксис ниже.

$new_array = array('new_key' => 'value') + $original_array;

Примечание. Не используйте array_merge(). array_merge() перезаписывает ключи и не сохраняет цифровые клавиши.

Ответ 3

В вашей ситуации вы хотите использовать array_merge():

array_merge(array('fruit1'=>'cherry', 'fruit2'=>'blueberry'), array('fruit3'=>'apple', 'fruit4'=>'orange'));

Чтобы добавить одно значение, для ассоциативного массива вместо array_unshift() снова используйте array_merge():

array_merge(array($key => $value), $myarray);

Ответ 4

@Cletus находится на месте. Просто добавьте, если упорядочение элементов во входных массивах неоднозначно, и вам нужен окончательный массив для сортировки, вы можете захотеть ksort:

$resulting_array = $array1 + $array2;
ksort($resulting_array);

Ответ 5

Используя тот же метод, что и @mvpetrovich, вы можете использовать сокращенную версию массива для сокращения синтаксиса.

$_array = array_merge(["key1" => "key_value"], $_old_array);

Рекомендации:

PHP: array_merge()

PHP: массивы - руководство

Начиная с PHP 5.4 вы также можете использовать синтаксис короткого массива, который заменяет array() на [].