【问题标题】:Checking if a key is the last element in an array?检查一个键是否是数组中的最后一个元素?
【发布时间】:2010-02-14 11:35:24
【问题描述】:

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

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

值“c”将具有键 2。是否有类似 is_end(2) 的代码返回 true 或 false,具体取决于它们的键是否是数组的最后一个?我可以使用某种while() 语句吗?

【问题讨论】:

标签: php arrays


【解决方案1】:

您可以使用end()key() 来获取数组末尾的密钥。

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

【讨论】:

  • 也许你的意思是这样的:end($array);$lastKey = key($array);但你不能只用 1 句话就做到这一切.....
  • 这种方法比使用count($array)-1有什么优势吗?
  • @andyface - 优点是您可以将此方法与关联数组一起使用,而不仅仅是基于数字的键(即:($array['mykey'] - 1) = undefined)
  • 没有更好的关联数组方法?这看起来很笨重?
  • 为了完整起见:count() 返回无效键的项目数。如果您有字符串键或其他键顺序而不是 0,1,2,3,.. $array[ count($array)-1 ] 将不起作用。
【解决方案2】:

你可以count数组值:

$last_index = count($array) - 1;

但这不适用于关联数组。

【讨论】:

  • 这是我平时使用的方法吗?永远不确定它是否是最好的,但是如果与 foreach 循环一起使用,接受的答案似乎会引起问题/混乱。有人有任何见解吗?
  • foreachend 都修改了内部数组指针(指向“当前”元素),因此同时使用这两种结构会搞砸。
  • 为了完整起见:count() 返回无效键的项目数。如果您有字符串键或其他键顺序而不是 0,1,2,3,.. $array[ count($array)-1 ] 也将不起作用。
【解决方案3】:
$is_2_lastone = array_pop(array_keys($array)) === 2;

【讨论】:

    【解决方案4】:

    假设您不使用associative array,您可以使用count 检查数组的长度。它将返回1+last index in array

    【讨论】:

    • 为了完整起见:count() 返回无效键的项目数。如果您有字符串键或其他键顺序而不是 0,1,2,3,.. $array[ count($array)-1 ] 将不起作用。
    猜你喜欢
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多