array_pop() lo elimina de la matriz. end() cambia el puntero interno.Obtener el último elemento de una matriz sin cambiar la matriz en PHP?
Es la única manera realmente alguna cludge como:
$my_array[array_pop(array_keys($my_array))];
?
array_pop() lo elimina de la matriz. end() cambia el puntero interno.Obtener el último elemento de una matriz sin cambiar la matriz en PHP?
Es la única manera realmente alguna cludge como:
$my_array[array_pop(array_keys($my_array))];
?
Esto funciona:
list($end) = array_slice($array, -1);
array_slice($array, -1)
devuelve una matriz con sólo el último elemento y list()
asigna el primer elemento del resultado de la rebanada de $end
.
@Alin Purcaru sugirió éste en los comentarios:
$end = current(array_slice($array, -1));
A partir de PHP 5.4, esto también funciona:
array_slice($array, -1)[0]
¿Qué pasa con '$ end = current (array_slice ($ array, -1));' en lugar del enfoque 'list' para obtener el único elemento de una matriz? –
sí, bueno :) agregado en la respuesta – arnaud576875
Gracias enhorabuena. Esperaba que hubiera alguna función o enfoque que no estaba encontrando. – Joren
Eh ... ¿qué pasa con reset()
ting después de utilizar end()
?
$lastItem = end($myArr);
reset($myArr);
porque cambia el puntero interno y OP parece no querer cambiar el puntero interno? :) – arnaud576875
@arnaud Soy consciente de que restablece el puntero, pero al menos lo pone al principio, que es el predeterminado. Su solución sería más apropiada para no restablecerla en absoluto. –
end($my_array);
veo nada malo en cambiar el puntero interno. Nadie lo está utilizando en estos días de todos modos
Nuevamente con una respuesta sarcástica sin leer la pregunta. Realmente deberías detener esto. –
sabes que es el problema de armas más rápido, lol. Todavía no veo sentido en la pregunta, incluso después de leerlo en –
@Alin, ¿cuál es el problema aquí? Aunque es tarde para el juego, es una respuesta válida y señala que se trata de una función infrautilizada. –
Desafortunadamente
list($end) = array_slice($array, -1);
no funciona con matrices asociativas. Así que uso
function pop_array_nondestructive($array)
{
return end($array);
}
<?php
/**
* Return last element from array without removing that element from array.
* https://github.com/jdbevan/PHP-Scripts/
*
* @param array $array The array to get the last element from
* @return mixed False if $array is not an array or an empty array, else the key of the last element of the array.
*/
function array_peek($array) {
if (!is_array($array)) return false;
if (count($array)<1) return false;
$last_key = array_pop(array_keys($array));
return $array[$last_key];
}
?>
Para ser justos, lo que está en el extremo * * es arbitraria basada en sus llaves. –