Подтвердить что ты не робот

Array_pop() с ключом

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

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

Я хотел использовать array_pop, чтобы получить последнюю пару key/value.

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

$last = array_pop($array);

var_dump($last);

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

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

4b9b3361

Ответ 2

попробуйте

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

Ответ 3

Вы можете использовать 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

Ответ 4

Это должно работать, просто не делайте этого внутри цикла 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(), который, вероятно, является лучшим решением

Ответ 5

Попробуйте следующее:

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

Ответ 6

Другая опция:

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