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数组操作吗?的主要内容,如果未能解决你的问题,请参考以下文章

PHP数组基本的操作方法

很全的php数组操作方法

PHP中的常用数组操作方法

PHP数组的几个操作,求并集,交集,差集,数组

取消设置操作后将PHP数组索引重置为从0开始[重复]

php数组操作,js数组操作