PHP-pop первый элемент массива вместо последнего (почитаемый массив pop)?
есть ли функция PHP, которая бы " поп " первый элемент массива?array_pop()
всплывает последний элемент, но я хотел бы открыть первый.
4 ответов
Быстрый 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()
работы на месте. Таким образом, требуется больше времени.