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

4 ответа:

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

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