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

当前回答

还有一个可能的解决方案……

$last_element = array_reverse( $array )[0];

其他回答

又短又甜。

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

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

——之前的解决方案

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

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

对我来说:

$last = $array[count($array) - 1];

associatives:

$last =array_values($array)[count($array - 1)]

这个怎么样?

Eg-

$arr = [1,2,3];
$lastElem = count($arr) ? $arr[count($arr) - 1] : null;

注意: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

这里的大多数解决方案对于不关联的数组是不可靠的,因为如果我们有一个最后一个元素为false的不关联数组,那么end和current(array_slice($array, -1))也将返回false,因此我们不能使用false作为一个空的不关联数组的指示符。

// end returns false form empty arrays
>>> $arr = []
>>> end($arr)
=> false

// last element is false, so end returns false,
// now we'll have a false possitive that the array is empty
>>> $arr = [1, 2, 3, false]
>>> end($arr)
=> false

>>> $arr = [1, 2, 3, false, 4]
>>> end($arr)
=> 4

对于current(array_slice($arr, -1))也是一样:

// returns false form empty arrays
>>> $arr = []
>>> current(array_slice($arr, -1))
=> false

// returns false if last element is false
>>> $arr = [1, 2, 3, false]
>>> current(array_slice($arr, -1))
=> false

>>> $arr = [1, 2, 3, false, 4]
>>> current(array_slice($arr, -1))
=> 4

最好的选择是使用array_key_last,这适用于PHP >= 7.3.0或更老的版本,我们使用count来获取最后的索引(仅适用于未关联的数组):

// returns null for empty arrays
>>> $arr = []
>>> array_key_last($arr)
=> null

// returns last index of the array
>>> $arr = [1, 2, 3, false]
>>> array_key_last($arr)
=> 3

// returns last index of the array
>>> $arr = [1, 2, 3, false, 4]
>>> array_key_last($arr)
=> 4

对于旧版本,我们可以使用count:

>>> $arr = []
>>> if (count($arr) > 0) $arr[count($arr) - 1]
// No excecution

>>> $arr = [1, 2, 3, false]
>>> if (count($arr) > 0) $arr[count($arr) - 1]
=> false

>>> $arr = [1, 2, 3, false, 4]
>>> if (count($arr) > 0) $arr[count($arr) - 1]
=> 4

以上就是非关联数组的全部内容。如果我们确定我们有关联的数组,那么我们可以使用end。