2010-09-27 6 views
46

J'ai un tableau qui est structuré comme celui-ci:dernière paire clé-valeur dans le tableau PHP

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

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

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

Comment puis-je obtenir la dernière valeur du tableau, mais le maintien de l'indice [35]?

Le résultat que je cherche est la suivante:

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

couse J'ai un petit shoutbox, basé sur des fichiers, et je veux montrer un seul cri, le fichier est sérialisé. – greenbandit

Répondre

152

essayer d'utiliser

end($array); 
+13

C'est la meilleure façon d'obtenir la valeur _ du dernier élément du tableau, mais l'OP demande un tableau contenant seulement le dernier élément (avec son index propre). Cependant, +1 car c'est ce que la plupart des gens googling cela aura besoin. – dotancohen

+0

L'OP a explicitement demandé *** ... mais en maintenant l'index [35]? ***. L'OP répète ce souhait dans le commentaire sur la réponse de Gumbo. Je pense donc qu'il est trompeur que cette réponse soit choisie comme réponse acceptée. La réponse de @salathe décrit le mieux le comportement demandé par le PO. –

10

Vous pouvez utiliser end pour faire avancer le pointeur interne à la fin ou array_slice pour obtenir un tableau contenant uniquement le dernier élément:

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

mais je dois préserver l'indice, comme: [35] => array ( [temps] => 1285571682 [utilisateur] => test2 ) – greenbandit

+0

Si vous avez besoin de préserver l'index, vous pouvez utiliser array_slice() . Voir http://stackoverflow.com/questions/3801891/get-last-value-in-array/3802007#3802007 –

2

Comme l'a dit Gumbo,

<?php 

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

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

Voir http://php.net/array_slice pour plus de détails sur ce que les arguments signifient.

P.S. Contrairement aux autres réponses, celui-ci fait réellement ce que vous voulez. :-)

+0

Mais cela retourne un autre tableau pas seulement la chaîne – ssamuel68

+4

+1 Ceci fait réellement ce que la question a demandé - il préserve l'index et renvoie un tableau avec un seul élément (ce qui est implicite dans l'exemple de la question). – 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 vous avez un tableau

$last_element = array_pop(array); 
1

Une autre solution froide est:

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

Ce qui précède comptera le nombre de valeurs de tableau, Soustraire1 puis retourner le valeur.

Remarque: Ceci ne peut être utilisé que si les touches de tableau sont numériques.

0

Comme la clé est nécessaire, la solution acceptée ne fonctionne pas.

Ce:

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

retournera exactement comme l'exemple dans la question.

Questions connexes