it-swarm.com.ru

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');
101
Colin Brock

Вы не можете просто сделать:

$resulting_array = $array2 + $array1;

?

194
cletus

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

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

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

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

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

23
PHPguru

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

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

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

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

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

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

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

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

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

PHP: array_merge ()

PHP: Массивы - Руководство

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

0
Bryce Gough