Intereting Posts

PHP: Array_unshift – не числовой индекс

Просто захотелось добавить новый параметр перед моим массивом с помощью array_unshift, но: Если я делаю это как обычно, у него есть числовой индекс. Как я могу отклонить индекс, например, что-то вроде этого …

<?php $queue = array("a", "B"); array_unshift($queue, "front" => "hello" ); //Not working, this is my question ;) ?> 

Тогда массив будет выглядеть так:

 Array { front => hello 0 => a 1 => B } 

Похоже, что array_unshift не может делать то, что вы хотите. Попробуй это:

 $queue = array('a', 'B'); $queue = array_merge(array('front' => 'hello'), $queue); 

Это дает результат, который вы хотите.

 массив
 (
     [front] => привет
     [0] => a
     [1] => b
 )

array_push , array_pop , array_shift , array_unshift предназначены для числовых массивов.

Вы можете использовать одно из решений array_merge о array_merge уже упоминалось, или вы можете использовать оператор + для массивов:

 $queue = array('front' => 'Hello') + $queue; 

Примечание. При использовании array_merge элементы с теми же ключами из второго массива будут перезаписывать те, что array_merge в первом из них, поэтому, если «фронт» уже существует в $queue он не будет перезаписан, а только перенесен на передний план. С другой стороны, если вы используете + , новое значение будет присутствовать в результате и будет спереди.

Использовать array_merge :

 $new_queue = array_merge(array("front"=>"hello"), $queue); 

Причина, почему вы должны использовать array_merge а не array_unshift состоит в том, что последний работает только с массивами с числовой индексацией.