saber - PHP: primer elemento pop de la matriz en lugar de último(reverenciado array_pop)?
¿Hay una función de PHP que ''explote'' el primer elemento de la matriz?
array_pop()
muestra el último elemento, pero me gustaría mostrar el primero.
Para mí array_slice () funciona bien, diga:
$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
Si bien array_shift()
es definitivamente la respuesta a su pregunta, vale la pena mencionar que puede ser un proceso innecesariamente lento cuando se trabaja con grandes arreglos. (o muchas iteraciones)
Después de recuperar el primer elemento, array_shift()
re-indexa todas las claves numéricas en una matriz, de modo que el elemento que solía estar en [1]
convierte en [0]
y un elemento en [10000]
convierte en [9999]
.
Cuanto más grande sea la matriz, más claves para volver a indexar. Y si está iterando en grandes arreglos, llamando a array_shift
en múltiples iteraciones, el impacto en el rendimiento puede acumularse.
Los puntos de referencia muestran grandes arreglos, a menudo es más barato invertir el orden de los arreglos y mostrar los elementos desde el final.
$array = array_reverse($array);
$value = array_pop($array);
array_pop()
obviamente no necesita volver a indexar, ya que está tomando desde el final, y array_reverse()
devuelve una nueva matriz simplemente copiando la matriz que se le pasó, de atrás hacia adelante. array_reverse($array, true)
se puede utilizar para conservar key => value
pares key => value
donde sea necesario.
[EDIT] Debo mencionar, la desventaja del método reverse-pop es el consumo de memoria, donde array_reverse()
genera una nueva matriz, mientras que array_shift()
funciona en su lugar. Por lo tanto, lleva más tiempo.
Quick Cheatsheet Si no está familiarizado con la jerga, aquí hay una traducción rápida de términos alternativos, que puede ser más fácil de recordar:
* array_unshift() - (aka Prepend ;; InsertBefore ;; InsertAtBegin )
* array_shift() - (aka UnPrepend ;; RemoveBefore ;; RemoveFromBegin )
* array_push() - (aka Append ;; InsertAfter ;; InsertAtEnd )
* array_pop() - (aka UnAppend ;; RemoveAfter ;; RemoveFromEnd )