这里的大多数解决方案对于非关联数组都是不可靠的,因为如果我们有一个最后一个元素为false 的非关联数组,那么end 和current(array_slice($array, -1)) 也会返回false,所以我们不能使用@987654326 @ 作为空的未关联数组的指示符。
// 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。