W3docs

next()

Aprende cómo PHP next() avanza el puntero interno de un array, qué devuelve, el problema con valores falsy y cómo se combina con reset(), current() y prev().

La función next() de PHP

Todo array de PHP tiene un puntero interno que marca un elemento como el "actual". La función next() mueve ese puntero una posición hacia adelante y devuelve el valor en el que se detiene. Forma parte de una pequeña familia de funciones de puntero — reset(), current(), prev() y end() — que permiten recorrer un array paso a paso sin necesidad de escribir tu propio contador de índice. Esta guía explica exactamente qué devuelve next(), cómo modifica el puntero y los casos límite que suelen sorprender a los desarrolladores.

Sintaxis y valor de retorno

next(array &$array): mixed

Tres detalles se desprenden de esa firma:

  • El array se pasa por referencia (&$array). next() no te entrega un array nuevo — muta el puntero interno del array que le pasas.
  • Devuelve el valor del elemento siguiente, no el actual. Para leer el elemento bajo el puntero sin moverlo, usa current().
  • Al final del array devuelve false y deja el puntero más allá del último elemento. Cada llamada posterior también devuelve false.

Cuando un script accede por primera vez a un array, el puntero se sitúa en el primer elemento. Por lo tanto, el primer next() ya devuelve el segundo elemento — una fuente frecuente de errores de desplazamiento.

Un ejemplo básico de next()

El fragmento siguiente lee el primer elemento con current(), luego avanza dos veces. La última llamada sale del array y devuelve false:

php— editable, runs on the server

La salida es:

apple
banana
cherry
bool(false)

Recorrer un array con next()

Un patrón habitual es llamar primero a reset() (para asegurarse de que el puntero está al inicio), imprimir el primer elemento y luego hacer un bucle con next() hasta que devuelva false:

php— editable, runs on the server

Esto imprime:

red
green
blue

Observa la comparación estricta !== false — la siguiente sección explica por qué una comprobación laxa es peligrosa.

El problema con los valores falsy

next() devuelve false al final del array, pero también devuelve false cuando el valor real de un elemento es false, 0, "" o null. Una condición laxa como while (next($array)) se detiene en cuanto encuentra uno de esos valores:

php— editable, runs on the server

Como next() devuelve 0 para el segundo elemento, el cuerpo del bucle nunca se ejecuta — la salida es simplemente:

done

Para arrays que pueden contener valores falsy, es preferible usar foreach (que ignora el puntero interno por completo) o verificar key(), que devuelve null únicamente al final genuino del array.

Cómo se relaciona next() con las otras funciones de puntero

next() raramente trabaja sola. Se combina con reset(), current(), prev(), end() y key() para darte control manual completo sobre el cursor de un array:

Función¿Mueve el puntero?Devuelve
current()NoElemento bajo el puntero
next()Avanza unoNuevo elemento actual (o false al final)
prev()Retrocede unoNuevo elemento actual (o false antes del inicio)
reset()Al primeroPrimer elemento
end()Al últimoÚltimo elemento
key()NoClave del elemento actual (o null al final)

El ejemplo siguiente usa end() y prev() junto con next() para mostrar cómo el puntero puede moverse en ambas direcciones durante un mismo recorrido:

php— editable, runs on the server

Salida:

30
20
30
10

Cuándo usar next()

Para la iteración simple sobre todos los elementos, un bucle foreach es más claro y seguro — nunca falla con valores falsy. Recurre a next() solo cuando necesites un control explícito y paso a paso de dónde se encuentra el puntero, por ejemplo al inspeccionar el elemento siguiente mientras aún estás en mitad del bucle.

Conclusión

La función next() avanza el puntero interno de un array un paso hacia adelante y devuelve el valor en el que se detiene, retornando false una vez que supera el último elemento. Dado que depende del puntero interno y señala el final con false, funciona de la mano con reset(), current() y prev() — recuerda simplemente la trampa de los valores falsy, donde una condición de bucle laxa se detiene demasiado pronto. Para la iteración cotidiana prefiere foreach; elige next() cuando necesites un control preciso sobre el cursor del array.

Práctica

Práctica
¿Cuál es el uso correcto de la función 'next' en PHP?
¿Cuál es el uso correcto de la función 'next' en PHP?
Was this page helpful?