Eri*_*rik 124
这甚至可以在这个数组上工作:
$array[0] = "hello";
$array[5] = "how";
$array[9] = "are";
end($array);
echo prev($array); // will print "how"
Run Code Online (Sandbox Code Playgroud)
使用count()的其他解决方案假设您的数组的索引按顺序排列; 通过使用end和prev来移动数组指针,您将获得实际值.尝试在上面的数组上使用count()方法,它将失败.
Not*_*ist 73
$array[count($array)-2]
Run Code Online (Sandbox Code Playgroud)
它应该是一个数字索引数组(从零开始).你应该至少有2个元素才能工作.(明显)
Dev*_*mal 19
至于我非常小的解决方案
end($array);
echo prev($array);
Run Code Online (Sandbox Code Playgroud)
Jam*_*are 16
array_slice将负偏移量作为第二个参数.这将为您提供包含第二个最后一项的单个项目数组:
$arr = array(1,2,3,4,5,6);
array_slice($arr, -2, 1);
Run Code Online (Sandbox Code Playgroud)
如果你只想要它自己的单一值,你有几个选择.如果您不介意使用中间变量,那么您可以使用[0]获取第一个值或调用array_pop或array_shift,它们都需要通过引用传递的变量,否则您将在严格模式下收到警告.
或者您可以使用array_sum或array_product,这有点hacky但适用于单项数组.
一个适用于关联数组和数值数组的方法是用于从数组array_pop()
末尾弹出元素.
$last = array_pop($array);
$second_last = array_pop($array);
// put back the last
array_push($array, $last);
Run Code Online (Sandbox Code Playgroud)
所有数组都有一个指向当前数组元素的“内部数组指针”,PHP 有几个函数可以让你在数组中导航并查看当前元素的键和值。
end()
- 将数组的内部指针设置为其最后一个元素reset()
- 将数组的内部指针设置为它的第一个元素prev()
- 倒带内部数组指针next()
- 推进数组的内部数组指针current()
- 返回数组中的当前元素key()
- 从数组中获取一个键each()
- 从数组中返回当前的键值对并前进数组光标无论数组是空的、顺序的还是关联的,这些函数都可以工作,并且由于示例中未指定数组,我假设这必须适用于任何数组。
$array = array(
'before_last' => false,
'last' => false,
);
end($array); /*
- set pointer to last element -> $array['last']
- return new current element value if it exists, -> false
- else return FALSE
*/
prev($array); /*
- set pointer one place before current pointer -> $array['before_last']
- return new current element value if it exists, -> false
- else return FALSE
*/
if(!is_null(key($array)){ /*
- return current element key if it exists -> "before_last"
- else return NULL
*/
$before_last_element_value = current($array); /*
- return current element value if it exists, -> false
- else return FALSE
*/
}
Run Code Online (Sandbox Code Playgroud)
如您所见,预期结果 ( false
) 和不存在元素的结果相同 ( FALSE
),因此您无法使用返回的元素值检查元素是否存在,元素键不同。
该key()
如果元素存在,否则将返回NULL返回当前键的值。有效的键永远不能为 NULL,因此如果返回 null,我们可以确定该元素不存在。