PHP有peek数组操作吗?
Posted
技术标签:
【中文标题】PHP有peek数组操作吗?【英文标题】:Does PHP have a peek array operation? 【发布时间】:2015-05-13 12:05:17 【问题描述】:我想查看数组的第一个元素。此操作等同于以下代码:
function peek($list)
$item = array_shift($list);
array_unshift($list, $item);
return $item;
这段代码对我来说似乎真的很重,并且 peek 通常由队列和堆栈库提供。 php 是否有一个已经构建的函数或更有效的方法来做到这一点?我搜索了 php.net,但找不到任何东西。
为清楚起见附加说明: 数组不一定是数字索引的。数组也可能有一些未设置的项目(在数字索引数组的情况下)弄乱了数字顺序。假设 $list[0] 是第一个元素是不安全的。
【问题讨论】:
我不明白你想要得到什么......你可以看看数组 $list[0] 的第一个值return $list[array_keys($list)[0]]
@fadeys.work 数组不一定是数字索引的。数组也可能有一些未设置的项目扰乱了数字顺序。长短假设 array[0] 是第一个元素在 php 中是一个非常糟糕的假设。
【参考方案1】:
current() 函数将为您提供“当前”数组值。如果您不确定您的代码是否已经开始迭代数组,您可以改用reset() - 但这将重置迭代器,这是一面-效果 - 这也会给你第一个项目。像这样:
$item = current($list);
或
$item = reset($list);
编辑:以上两个函数适用于关联数组和数值数组。注意:既没有给出“键”,也没有给出“值”。如果您还需要“密钥”,请使用key() 方法获取当前的“密钥”(当前是指在迭代数组的情况下程序在数组中指向的位置 - 参见 foreach,for,迭代器等)
【讨论】:
很好的答案。我很欣赏关于key
函数的注释。如果这里没有回答,那将是我的下一个问题:)。【参考方案2】:
是的,PHP 有一个 peek 功能。它是函数 end()。 这会将指针设置为数组的最后一个元素并返回该值。 如果数组为空,则返回false。
见:https://www.php.net/manual/en/function.end.php
另外两个堆栈函数是 array_pop() 和 array_push()。
【讨论】:
end
是与问题中描述的操作相反的操作。我相信“重置”将是正确的答案。但是,如果您使用 push/pop 而不是 shift/unshift,则它确实等同于 peek,除了明显的 cavoite 它将数组指针移动到数组的末尾。
@danielson317:你说得对。我忽略了“第一个元素”。重置是要走的路。你想编辑我的答案吗?以上是关于PHP有peek数组操作吗?的主要内容,如果未能解决你的问题,请参考以下文章