检查一个键是否是数组中的最后一个元素?

10

如何检查这个键是否是数组中的最后一个元素?

$array = array("a","b","c");

值为“c”的键是2。是否有类似于is_end(2)的代码,根据键是否是数组的最后一个,返回true或false?是否有我可以使用的while()语句?


可能存在重复的问题:http://stackoverflow.com/questions/1892848/return-last-numeric-key-not-value-of-an-array,https://dev59.com/kkXRa4cB1Zd3GeqPsouE - Felix Kling
5个回答

22

你可以使用end()key()函数来获取数组末尾的键。

end($array);
$lastKey = key($array);

也许你的意思是:end($array);$lastKey = key($array); 但你不能只用一句话就完成它。 - useless
这种方法与使用 count($array)-1 相比有什么优势吗? - andyface
1
@andyface - 的好处是您可以将此方法与关联数组一起使用,而不仅仅是基于数字的键(例如:($array['mykey'] - 1) = undefined)。 - Jonathan Crowe
1
没有更好的方法使用关联数组吗?这种方法看起来有点笨拙。 - fraxture
为了完整起见:count()返回的是非有效键的项目数。如果您有字符串键或其他键顺序而不是0,1,2,3,.. $array [ count($array)-1 ]将无法工作。 - Dennis Heiden

5
你可以使用 count 函数来计算数组的值:
$last_index = count($array) - 1;

但是这种方法无法处理关联数组。

这是我通常使用的方法吗?我从来不确定它是否是最好的,但是接受的答案似乎会在使用foreach循环时引起问题/混淆。有人有什么见解吗? - andyface
1
foreachend 都会修改内部数组指针(指向“当前”元素),因此同时使用两个结构会使事情变得混乱不堪。 - Felix Kling
为了完整起见:count()返回的是无效键的项目数。如果您有字符串键或其他键顺序不是0,1,2,3等,则$array[count($array)-1]也无法工作。 - Dennis Heiden

1
$is_2_lastone = array_pop(array_keys($array)) === 2;

0
假设您不使用关联数组,您可以通过使用count检查数组的长度来解决问题。它将返回1 + 数组中的最后一个索引

为了完整起见:count()返回的是无效键的项目数。如果您有字符串键或其他键顺序不是0,1,2,3等,则$array[count($array)-1]将无法工作。 - Dennis Heiden

0

如果你使用的是 PHP 7 >= 7.3.0 或者 PHP 8,你可以使用 array_key_last()

$last_key = array_last_key( $arr );


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接