Ответ 1
Отъезд 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 )
Рассмотрим следующий массив
$array = array('fruit' => 'apple',
'vegetable' => 'potato',
'dairy' => 'cheese');
Я хотел использовать array_pop, чтобы получить последнюю пару key/value.
Однако отметим, что после следующего
$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
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
)
Другая опция:
<?php
end($array);
list($key, $value) = each($array);
array_pop($array);
var_dump($key, $value);
?>