array_pop() removes it from the array.
end() changes the internal pointer.
Is the only way really some cludge like:
$my_array[array_pop(array_keys($my_array))];
?
array_pop() removes it from the array.
end() changes the internal pointer.
Is the only way really some cludge like:
$my_array[array_pop(array_keys($my_array))];
?
This works:
list($end) = array_slice($array, -1);
array_slice($array, -1) returns an array with just the last element and list() assigns the first element of slice's result to $end.
@Alin Purcaru suggested this one in comments:
$end = current(array_slice($array, -1));
Since PHP 5.4, this works too:
array_slice($array, -1)[0]
$end = current(array_slice($array, -1)); instead of the list approach for getting the only element of an array?<?php
/**
* Return last element from array without removing that element from array.
* https://github.com/jdbevan/PHP-Scripts/
*
* @param array $array The array to get the last element from
* @return mixed False if $array is not an array or an empty array, else the key of the last element of the array.
*/
function array_peek($array) {
if (!is_array($array)) return false;
if (count($array)<1) return false;
$last_key = array_pop(array_keys($array));
return $array[$last_key];
}
?>
end($my_array);
I see nothing bad in changing internal pointer. Nobody is using it these days anyway
end() as well.