2010-09-27 22 views
46

tengo una matriz que está estructurado de la siguiente manera:último par clave-valor en PHP matriz

[33] => Array 
    (
     [time] => 1285571561 
     [user] => test0 
    ) 

[34] => Array 
    (
     [time] => 1285571659 
     [user] => test1 
    ) 

[35] => Array 
    (
     [time] => 1285571682 
     [user] => test2 
    ) 

¿Cómo puedo obtener el último valor de la matriz, pero manteniendo el índice [35]?

El resultado que estoy buscando es la siguiente:

[35] => Array 
    (
     [time] => 1285571682 
     [user] => test2 
    ) 
+0

couse tengo un pequeño shoutbox, basado en archivos, y quiero mostrar solo un grito, el archivo está serializado. – greenbandit

Respuesta

152

tratan de utilizar

end($array); 
+13

Esta es la mejor forma de obtener el _valor_ del último elemento de la matriz, pero el OP solicita una matriz que contiene solo el último elemento (con su índice apropiado). Sin embargo, +1, ya que esto es lo que _más personas_ googlearán esto necesitará. – dotancohen

+0

El OP preguntó explícitamente *** ... pero manteniendo el índice [35]? ***. El OP repite este deseo en el comentario sobre la respuesta de Gumbo. Por lo tanto, creo que es engañoso que esta respuesta se seleccione como la respuesta aceptada. La respuesta de @salathe best describe el comportamiento que el OP solicitó. –

10

Puede utilizar end para avanzar el puntero interno al final o array_slice para obtener una matriz que contiene sólo el último elemento:

$last = end($arr); 
$last = current(array_slice($arr, -1)); 
+0

pero necesito para preservar el índice, como: [35] => Array ( [hora] => 1285571682 [usuario] => test2 ) – greenbandit

+0

Si necesita preservar el índice, se puede usar array_slice() . Consulte http://stackoverflow.com/questions/3801891/get-last-value-in-array/3802007#3802007 –

2

Como dijo Gumbo,

<?php 

$fruits = array('apple', 'banana', 'cranberry'); 
echo end($fruits); // cranberry 

?> 
67
$last = array_slice($array, -1, 1, true); 

Ver http://php.net/array_slice para obtener más información sobre el significado de los argumentos.

P.S. A diferencia de las otras respuestas, esta realmente hace lo que quieres. :-)

+0

Pero esto devuelve otra matriz no solo la cadena – ssamuel68

+4

+1 Esto realmente hace lo que hace la pregunta: conserva el índice y devuelve una matriz con un solo elemento (que es lo que implicaba el ejemplo en la pregunta). – JMTyler

2
// if your array keys lile 
// 0 1 2 3 4 ... 

$lastindex= count($ar)-1; 

// but if you are not sure 

$ar_k=array_keys($ar); 
$lastindex=$ar_k[count($ar_k)-1]; 

// will work 
4

Si tiene una matriz

$last_element = array_pop(array); 
1

Otra solución fría ser:

$value = $arr[count($arr) - 1]; 

Lo anterior se contará la cantidad de valores de la matriz, restar 1 y luego devolver el valor.

Nota: Esto solo se puede usar si las teclas de matriz son numéricas.

0

Como se necesita la clave, la solución aceptada no funciona.

Este:

end($array); 
return array(key($array) => array_pop($array)); 

estará exactamente como el ejemplo en la pregunta.

Cuestiones relacionadas