2011-09-20 36 views

Respuesta

21

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] 
+4

¿Qué pasa con '$ end = current (array_slice ($ array, -1));' en lugar del enfoque 'list' para obtener el único elemento de una matriz? –

+0

sí, bueno :) agregado en la respuesta – arnaud576875

+0

Gracias enhorabuena. Esperaba que hubiera alguna función o enfoque que no estaba encontrando. – Joren

2

Eh ... ¿qué pasa con reset()ting después de utilizar end()?

$lastItem = end($myArr); 
reset($myArr); 
+1

porque cambia el puntero interno y OP parece no querer cambiar el puntero interno? :) – arnaud576875

+0

@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. –

-4
end($my_array); 

veo nada malo en cambiar el puntero interno. Nadie lo está utilizando en estos días de todos modos

+6

Nuevamente con una respuesta sarcástica sin leer la pregunta. Realmente deberías detener esto. –

+0

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 –

+0

@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. –

0

Desafortunadamente

list($end) = array_slice($array, -1); 

no funciona con matrices asociativas. Así que uso

function pop_array_nondestructive($array) 
    { 
    return end($array); 
    } 
0
<?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]; 
} 
?> 
Cuestiones relacionadas