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'); 

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

 $resulting_array = $array2 + $array1; 

?

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

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

Синтаксис приведен ниже.

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

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

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

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

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

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

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

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