这里的大多数解决方案对于不关联的数组是不可靠的,因为如果我们有一个最后一个元素为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。