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

当前回答

又短又甜。

我想出了一个解决方案来删除错误信息,并保留一行程序形式和高效性能:

$lastEl = array_values(array_slice($array, -1))[0];

——之前的解决方案

$lastEl = array_pop((array_slice($array, -1)));

注意:额外的括号是为了避免PHP的严格标准:只有变量应该通过引用传递。

其他回答

在几乎每一种带有数组的语言中,使用A[A.size-1]都不会出错。我想不出一个基于1的数组(而不是基于0的数组)的语言例子。

注意:For (PHP 7 >= 7.3.0) 我们可以用 array_key_last -获取数组的最后一个键

array_key_last ( array $array ) : mixed

裁判:http://php.net/manual/en/function.array-key-last.php

试着结束:

$myLastElement = end($yourArray);

注意,这不仅返回传递数组的最后一个元素,它还修改了数组的内部指针,current、each、prev和next都使用了这个指针。

对于PHP >= 7.3.0:

如果使用的是PHP 7.3.0或更高版本,可以使用array_key_last,它返回数组的最后一个键,而不修改其内部指针。要得到最后一个值,你可以这样做:

$myLastElement = $yourArray[array_key_last($yourArray)];

通过使用下面的逻辑,您可以轻松地从数组中获取最后一个元素

$array = array('a', 'b', 'c', 'd');
echo ($array[count($array)-1]);

使用下面的逻辑,不仅可以得到最后一个元素,还可以得到第二个最后一个元素,第三个最后一个元素等等。

对于倒数第二个元素,你必须在上面的语句中只传递数字2,例如: 回声($阵列[count(数组)美元2]);

避免引用传递错误的一种方法(例如。"end(array_values($foo))")是使用call_user_func或call_user_func_array:

// PHP Fatal error: Only variables can be passed by reference
// No output (500 server error)
var_dump(end(array(1, 2, 3)));

// No errors, but modifies the array's internal pointer
// Outputs "int(3)"
var_dump(call_user_func('end', array(1, 2, 3)));

// PHP Strict standards:  Only variables should be passed by reference
// Outputs "int(3)"
var_dump(end(array_values(array(1, 2, 3))));

// No errors, doesn't change the array
// Outputs "int(3)"
var_dump(call_user_func('end', array_values(array(1, 2, 3))));