array_pop () с ключом

Рассмотрим следующий массив

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

Я хотел использовать array_pop для получения последней пары ключ / значение .

Однако следует отметить, что после следующих

 $last = array_pop($array); var_dump($last); 

Он выведет только значение ( string(6) "cheese" )

Как я могу «поп» последней пары из массива, сохраняя структуру массива ключей / значений?

Проверьте 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 ) 

пытаться

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

Вы можете использовать end() и key() для ключа и значения, после чего вы можете указать значение.

 $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 

Это должно работать, просто не делайте этого внутри цикла foreach (это испортит цикл)

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

Изменить: Briedis предлагает array_slice() который, вероятно, является лучшим решением

Другой вариант:

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

Попробуй это:

 <?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)); ?> 

Вывод:

 Array ( [dairy] => cheese )