Рассмотрим следующий массив
$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 )