W3docs

current()

Aprende cómo funciona current() en PHP, qué devuelve el puntero interno de un array y cuándo usarla frente a foreach.

Introducción

Todo array de PHP lleva un puntero interno — un cursor oculto que marca un elemento como el "actual". La función current() lee el valor en ese cursor sin moverlo. Esto convierte a current() en la mitad lectora del conjunto de herramientas de recorrido manual de arrays de PHP, la contraparte de las funciones de navegación next(), prev(), reset() y end().

Este capítulo explica exactamente qué es el puntero interno, cómo se comporta current() en los extremos de un array y las advertencias que conviene conocer antes de usarla.

¿Qué es la función current() en PHP?

current() devuelve el valor del elemento en el que se encuentra actualmente el puntero interno del array. No avanza el puntero, por lo que llamarla repetidamente devuelve el mismo valor hasta que otra función mueva el cursor.

Cuando se crea un array nuevo, el puntero comienza en el primer elemento. Las funciones que lo mueven son:

  • next() — avanza un elemento hacia adelante y devuelve ese valor.
  • prev() — retrocede un elemento y devuelve ese valor.
  • reset() — salta al primer elemento.
  • end() — salta al último elemento.

current() es la única de estas que lee sin mover el puntero.

Sintaxis de la función current()

current(array $array): mixed

Acepta un único argumento — el array a inspeccionar — y devuelve el valor en la posición actual del puntero, o false si el array está vacío o el puntero ha sobrepasado el último elemento.

Precaución: Como current() devuelve false al final de un array, no puedes usarla para detectar el fin de un array que contenga legítimamente un valor false. Usa key(), que devuelve null más allá del final, cuando necesites una comprobación de fin de array fiable.

Ejemplo básico

php— editable, runs on the server

El puntero comienza en el primer elemento, por lo que esto imprime apple. Llama a current() diez veces más y seguirás obteniendo apple — nada ha movido el cursor.

Mover el puntero con next() y prev()

current() resulta útil en combinación con las funciones de navegación. Cada una reposiciona el cursor, y current() (o el valor que devuelve la propia función) indica dónde has aterrizado.

<?php

$fruits = ['apple', 'banana', 'cherry'];

echo current($fruits) . "\n"; // apple  (pointer at index 0)
next($fruits);
echo current($fruits) . "\n"; // banana (pointer at index 1)
next($fruits);
echo current($fruits) . "\n"; // cherry (pointer at index 2)
prev($fruits);
echo current($fruits) . "\n"; // banana (pointer back at index 1)
reset($fruits);
echo current($fruits) . "\n"; // apple  (pointer reset to start)

La salida es:

apple
banana
cherry
banana
apple

Qué ocurre al final del array

Si el puntero avanza más allá del último elemento, current() devuelve false:

<?php

$fruits = ['apple', 'banana', 'cherry'];

end($fruits);                       // pointer on the last element
echo current($fruits) . "\n";       // cherry
next($fruits);                      // step beyond the last element
var_dump(current($fruits));         // bool(false)

Esto imprime:

cherry
bool(false)

Por eso importa la precaución anterior: un false de current() puede significar "fuera del rango" o "el valor del elemento es realmente false."

current() y foreach

Una sorpresa habitual: foreach itera sobre un array sin usar ni mover su puntero interno. Por tanto, current() no se ve afectada por un bucle foreach y sigue reflejando lo que establecieron por última vez las funciones que mueven el puntero.

<?php

$fruits = ['apple', 'banana', 'cherry'];

foreach ($fruits as $fruit) {
    // looping does not touch the internal pointer
}

echo current($fruits); // apple — still at the start

Esto imprime apple, no false. Si quieres control manual sobre la posición, usa next()/current(); si simplemente quieres recorrer todos los elementos, usa foreach.

Cuándo usar current()

Recurre a current() cuando necesites un recorrido con estado a través de un array — uno en el que avances el cursor a lo largo de varias llamadas a funciones o iteraciones de bucle y necesites examinar el elemento activo. Casos típicos:

  • Procesar un array tipo cola mientras combinas next() y prev().
  • Leer el primer elemento de forma económica: current($array) devuelve el primer valor sin necesitar su clave.
  • Implementar un cursor personalizado sobre un conjunto de datos.

Para la iteración cotidiana, prefiere foreach — es más claro e inmune a las sorpresas del puntero.

Conclusión

current() lee el valor en el puntero interno de un array sin moverlo, lo que la convierte en la mitad lectora del conjunto de recorrido manual de PHP junto con next(), prev(), reset() y end(). Recuerda sus dos casos extremos: devuelve el mismo valor hasta que algo más mueva el cursor, y devuelve false más allá del final del array — así que usa key() cuando necesites detectar el final de forma fiable.

Práctica

Práctica
¿Qué hace la función current() en PHP?
¿Qué hace la función current() en PHP?
Was this page helpful?