W3docs

Comprender la función end() de array en PHP

Aprende a usar la función end() de PHP para obtener el último valor de un array, cómo maneja el puntero interno y los errores más comunes.

En PHP, los arrays son uno de los tipos de datos más utilizados. Un array puede almacenar una colección de datos en una sola variable, que puede manipularse e iterarse fácilmente. Una de las funciones disponibles para manipular arrays es la función end().

En su forma más simple, la función end() devuelve el último valor de un array. Internamente, también mueve el puntero interno del array al último elemento, que es el detalle que la mayoría de la gente pasa por alto. En este artículo veremos la sintaxis de la función end(), cómo funciona en la práctica, cómo interactúa con el puntero interno y los errores comunes —arrays vacíos y arrays asociativos— que suelen confundir a los desarrolladores.

Sintaxis

La sintaxis de la función end() es sencilla:

end(array &$array): mixed

Donde $array es el array cuyo último elemento queremos devolver. Hay dos cosas que vale la pena destacar:

  • El array se pasa por referencia (&$array) porque end() muta el puntero interno del array. Como resultado, debes pasar una variable real, no una expresión en línea como end([1, 2, 3]) — esto emite un aviso en versiones antiguas de PHP y un error fatal en PHP 8.1+.
  • El tipo de retorno es mixed: devuelve el valor del último elemento, o false si el array está vacío.

Uso

Veamos más de cerca cómo funciona la función end() en la práctica. Considera el siguiente array:

Un array de PHP

$fruits = array('apple', 'banana', 'cherry');

Para obtener el último elemento de este array usando end(), utilizaríamos el siguiente código:

php— editable, runs on the server

Tras ejecutar este código, $last_fruit contendría la string 'cherry'.

Modificar el puntero del array

Cada array de PHP mantiene un puntero interno que rastrea la posición "actual". Llamar a end() mueve ese puntero al último elemento. Las demás funciones de puntero también lo mueven: reset() salta de vuelta al primer elemento, next() avanza un paso, prev() retrocede un paso y current() lee el elemento en el que está el puntero sin moverlo.

Dado que end() deja el puntero en el último elemento, llamar a current() justo después devuelve ese mismo último valor:

<?php

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

end($fruits);
echo current($fruits);

Este código producirá la siguiente salida:

cherry

Si necesitas iterar sobre un array en orden inverso, no intentes hacerlo llamando a end() repetidamente — el puntero nunca avanza más allá del último elemento, por lo que un bucle impulsado por end() nunca terminaría. En su lugar, usa array_reverse() (o un bucle for estándar con índice que cuente hacia atrás desde count($array) - 1):

<?php

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

foreach (array_reverse($fruits) as $fruit) {
    echo $fruit . "<br>";
}

Este código producirá la siguiente salida:

cherry
banana
apple

Errores comunes

Hay algunos errores comunes que debes tener en cuenta al usar la función end():

Arrays vacíos

Si el array pasado a end() está vacío, la función devuelve false. Esto es ambiguo: false también es un valor legítimo que un array no vacío podría contener, por lo que una comprobación simple puede darte la respuesta incorrecta.

php— editable, runs on the server

Para mayor seguridad, comprueba si el array está vacío primero (con empty() o count()), o usa la comparación estricta !== false:

php— editable, runs on the server

Arrays asociativos

La función end() siempre devuelve el valor del último elemento, independientemente de si el array es indexado o asociativo:

php— editable, runs on the server

Si necesitas obtener la última clave de un array asociativo, usa la función array_key_last() en su lugar:

php— editable, runs on the server

end() vs array_pop()

Un punto de confusión habitual es la diferencia entre end() y array_pop(). Ambas te dan el último elemento, pero:

  • end() lee el último valor y deja el array intacto (solo mueve el puntero interno).
  • array_pop() elimina el último elemento y lo devuelve, reduciendo el array en uno.

Usa end() cuando solo quieras consultar el último valor; usa array_pop() cuando realmente quieras extraerlo del array.

Funciones relacionadas

La función end() forma parte de la familia de funciones de puntero interno de PHP. Estos capítulos cubren el resto:

  • reset() — mueve el puntero al primer elemento y lo devuelve.
  • current() — lee el elemento en la posición actual del puntero.
  • next() — avanza el puntero y devuelve el siguiente elemento.
  • prev() — retrocede el puntero y devuelve el elemento anterior.
  • array_reverse() — obtiene una copia invertida del array para una iteración inversa limpia.
  • array_pop() — elimina y devuelve el último elemento.

Conclusión

En este artículo hemos analizado en detalle la función end() en PHP, incluyendo su sintaxis, uso y errores comunes. Aunque puede parecer una función sencilla, hay matices importantes que debes tener en cuenta al usarla. Al comprender cómo funciona end(), podrás evitar errores habituales y aprovechar al máximo esta función en tu código PHP.

Diagrama

A continuación se muestra un diagrama que ilustra el uso de la función end():

graph TD
A[Array] --> B(end())
B --> C{Check result}
C --> |True| D(Return last element)
C --> |False| E(Handle empty array)

Práctica

Práctica
¿Cuál es el propósito de la función end() en PHP?
¿Cuál es el propósito de la función end() en PHP?
Was this page helpful?