Ok,

我知道所有关于array_pop(),但它删除了最后一个元素。如何获得数组的最后一个元素而不删除它?

这里有一个奖励:

$array = array('a' => 'a', 'b' => 'b', 'c' => 'c');

甚至

$array = array('a', 'b', 'c', 'd');
unset($array[2]);
echo $array[sizeof($array) - 1]; // Output: PHP Notice:  Undefined offset:  2 in - on line 4

当前回答

Array_values (array_reverse($array))[0]适用于所有这些情况。

其他回答

要做到这一点,避免E_STRICT,并且不混乱数组的内部指针,你可以使用:

function lelement($array) {return end($array);}

$last_element = lelement($array);

Lelement只适用于副本,所以它不会影响数组的指针。

array_slice($array, -1)有什么问题?(参见手册:http://us1.php.net/array_slice)

Array_slice()返回一个数组。可能不是你想要的。你想要元素。

我认为这是对所有现有答案的轻微改进:

$lastElement = count($array) > 0 ? array_values(array_slice($array, -1))[0] : null;

执行效果优于end()或使用array_keys()的解决方案,特别是对于大型数组 不会修改数组的内部指针 不会尝试访问空数组的未定义偏移量 将工作如预期的空数组,索引数组,混合数组,和关联数组

从Array中获取最后一个值:

array_slice($arr,-1,1) ;

删除数组的最后一个值:

array_slice($arr,0,count($arr)-1) ;

简单地:$last_element = end((array_values($array)))

不重置数组,也不给出严格警告。

PS.由于投票最多的答案仍然没有双括号,所以我提交了这个答案。