PHP-pop первый элемент массива вместо последнего (почитаемый массив pop)?

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

4 ответов


вы ищете array_shift().

PHP Array Shift


Быстрый 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 ) 

для меня 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

пока 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] я должен упомянуть, недостатком метода reverse-pop является потребление памяти, где array_reverse() создает новый массив, в то время как array_shift() работы на месте. Таким образом, требуется больше времени.