2011-08-03 12 views
22

Rozważmy następującą tablicęużycia array_pop() z kluczem

$array = array('fruit'  => 'apple', 
       'vegetable' => 'potato', 
       'dairy'  => 'cheese'); 

chciałem użyć array_pop dostać ostatnią klucz/wartość parę.

Jednak będzie zauważyć, że po następnym

$last = array_pop($array); 

var_dump($last); 

Będzie tylko wyjście wartość (string(6) "cheese")

Jak mogę „pop” ostatnią parę z tablicy, zachowując klucz/wartość struktury tablicowej?

Odpowiedz

18

Wyjazd array_slice()http://php.net/manual/en/function.array-slice.php

print_r(array_slice(array("a" => "1", "b" => 2, "c" => 3), -1, 1)); 
Array 
(
    [c] => 3 
) 
+2

Zapewnienie ustawić zachowaj_klucze = true jeśli klawisze numeryczne lub nie może zdobyć parę, której się spodziewałeś! –

+0

To zadziała, ale wykonanie potrójnej instrukcji inline jako przykładu może być mylące dla początkujących, zdecydowanie nie polecam tej części w kodzie. – sricks

2

To powinno działać, tylko nie rób tego wewnątrz pętli foreach (to będzie bałagan pętlę)

end($array); // set the array pointer to the end 
$keyvaluepair = each($array); // read the key/value 
reset($array); // for good measure 

Edytuj: Briedis sugeruje array_slice(), co jest prawdopodobnie lepszym rozwiązaniem

10

spróbować

end($array); //pointer to end 
each($array); //get pair 
4

Można użyć end() i key() do klucza i wartości, wtedy można pop wartość.

$array = array('fruit' => 'apple', 'vegetable' => 'potato', 'dairy' => 'cheese'); 
$val = end($array); // 'cheese' 
        // Moves array pointer to end 
$key = key($array); // 'dairy' 
        // Gets key at current array position 
array_pop($array); // Removes the element 
        // Resets array pointer 
+0

Ciekawe, dzięki, wykorzystałem to dzisiaj ... –

0

Spróbuj tego:

<?php 

function array_end($array) 
{ 
    $val = end($array); 
    return array(array_search($val, $array) => $val); 
} 

$array = array(
    'fruit' => 'apple', 
    'vegetable' => 'potato', 
    'dairy' => 'cheese' 
); 

echo "<pre>"; 
print_r(array_end($array)); 
?> 

wyjściowa:

Array 
(
    [dairy] => cheese 
) 
0

Inna opcja:

<?php 
end($array); 
list($key, $value) = each($array); 
array_pop($array); 
var_dump($key, $value); 
?> 
Powiązane problemy