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