Подтвердить что ты не робот

Вставить первый элемент массива вместо последнего (перевернутый array_pop)?

Есть ли PHP-функция, которая "выталкивает" первый элемент массива?
array_pop() выскакивает последний элемент, но я бы хотел выдвинуть первый.

4b9b3361

Ответ 2

Quick Cheatsheet Если вы не знакомы с жаргоном, вот быстрый перевод альтернативных терминов, которые могут быть легче запомнить:

* array_unshift()  -  (aka Prepend ;; InsertBefore ;; InsertAtBegin )     
* array_shift()    -  (aka UnPrepend ;; RemoveBefore  ;; RemoveFromBegin )

* array_push()     -  (aka Append ;; InsertAfter ;; InsertAtEnd )     
* array_pop()      -  (aka UnAppend ;; RemoveAfter ;; RemoveFromEnd ) 

Ответ 3

Для меня array_slice() отлично работает, Скажите:

$arr = array(1,2,3,4,5,6);
//array_slice($array,offset); where $array is the array to be sliced, and   offset is the number of array elements to be sliced
$arr2 = array_slice($arr,3);//or
$arr2 = array_slice($arr,-3);//or
$arr2 = array_slice($arr,-3,3);//return 4,5 and 6 in a new array
$arr2 = array_slice($arr,0,4);//returns 1,2,3 and 4 in a new array

Ответ 4

Хотя array_shift() определенно является ответом на ваш вопрос, стоит упомянуть, что он может быть излишне медленным процессом при работе с большими массивами. (или много итераций)

После извлечения первого элемента array_shift() переиндексирует все числовые ключи в массиве, так что элемент, который был в [1], становится [0], а элемент в [10000] становится [9999].

Чем больше массив, тем больше ключей для переиндексации. И если вы выполняете итерации по большим массивам, вызывая array_shift на нескольких итерациях, снижение производительности может увеличиться.

Тесты показывают, что для больших массивов часто дешевле изменить порядок массивов и вытолкнуть элементы с конца.

    $array = array_reverse($array);
    $value = array_pop($array);

array_pop(), очевидно, не нуждается в переиндексации, так как он берется с конца, и array_reverse() возвращает новый массив, просто копируя переданный ему массив, спереди назад. array_reverse($array, true) может использоваться для сохранения пар key => value, где это необходимо.

[EDIT] Следует отметить, что недостатком метода обратного всплытия является потребление памяти, когда array_reverse() генерирует новый массив, а array_shift() работает на месте. Таким образом, занимает больше времени.