2010-09-27 14 views
46

Mam tablicę, która jest zorganizowany tak:Pobierz ostatnią parę klucz-wartość w tablicy PHP

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

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

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

Jak mogę uzyskać ostatnią wartość w tablicy, ale utrzymanie indeksu [35]?

Wynik że szukam to:

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

Couse Mam małą shoutbox, opartą na plikach i chcę pokazać tylko jeden okrzyk, plik jest serializowany. – greenbandit

Odpowiedz

152

spróbować użyć

end($array); 
+13

To jest najlepszy sposób na uzyskanie _value_ ostatniego elementu tablicy, ale OP pyta o tablicę zawierającą tylko ostatni element (z właściwym indeksem). Jednak +1 to właśnie to, czego będą potrzebować większość ludzi, którzy będą googlować. – dotancohen

+0

PO wyraźnie zapytał *** ... ale zachowując indeks [35]? ***. PO powtarza to życzenie w komentarzu do odpowiedzi Gumbo. Moim zdaniem jest to mylące, że ta odpowiedź jest wybrana jako przyjęta odpowiedź. Odpowiedź @salathe najlepiej opisuje zachowanie, o które prosił OP. –

10

Można użyć end aby przejść wewnętrzny wskaźnik do końca lub array_slice aby uzyskać tablicę zawierającą tylko ostatni element:

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

ale muszę zachować indeksu, np: [35] => Array ( [czas] => 1285571682 [user] => test2 ) – greenbandit

+0

Jeśli trzeba zachować indeksu, można użyć array_slice() . Zobacz http://stackoverflow.com/questions/3801891/get-last-value-in-array/3802007#3802007 –

2

Jak powiedział Gumbo,

<?php 

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

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

Zobacz http://php.net/array_slice szczegóły na co argumenty myśli.

P.S. W przeciwieństwie do innych odpowiedzi, ten naprawdę robi to, co chcesz. :-)

+0

Ale to zwraca inną tablicę, nie tylko ciąg – ssamuel68

+4

+1 To faktycznie robi to, o co pytano - zachowuje indeks i zwraca tablicę z jednym elementem (co zostało zasugerowane przez przykład w pytaniu). – 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

Jeśli tablicę

$last_element = array_pop(array); 
1

Innym rozwiązaniem zimno być:

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

Powyższy liczy ilość wartości macierzy, odejmowanie 1 a następnie zawróci wartość.

Uwaga: Można tego używać tylko wtedy, gdy klucze tablicy są numeryczne.

0

Ponieważ klucz jest potrzebny, przyjęte rozwiązanie nie działa.

to:

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

powróci dokładnie tak, jak na przykład w pytaniu.

Powiązane problemy