Php 如何为我知道在数组中唯一的键获取索引

Php 如何为我知道在数组中唯一的键获取索引,php,arrays,Php,Arrays,我有一个按特定顺序排列的项目列表,所以我决定将它们存储在一个数组中 $items = array( "apple", "banana", "pear" ); 如果用参数“banana”调用程序,我需要能够说“apple”在前面,而“pear”在后面。目前我正在做这样的事情: foreach($items as $k=>$v) { if ($v == "banana") { $current_key = $k } 现在我知道$current_key-1是前一个键,+1是

我有一个按特定顺序排列的项目列表,所以我决定将它们存储在一个数组中

$items = array(
   "apple",
   "banana",
   "pear"
);
如果用参数“banana”调用程序,我需要能够说“apple”在前面,而“pear”在后面。目前我正在做这样的事情:

foreach($items as $k=>$v) { if ($v == "banana") { $current_key = $k }
现在我知道$current_key-1是前一个键,+1是下一个键。它可以工作,只是在整个数组中进行迭代感觉很难看。有更好的方法吗

更新 如果有人在意,我决定做一些快速测试,看看获取信息的方式有多快。超过1000次迭代,在6000个项目的阵列上,微时间重现:

我的邮寄地址:4.567 阵列搜索:2.749

在我思考的同时,我还尝试了一种将数据存储在数组中的方法,如:

$items['banana']['next'] = 'pear';
$items['banana']['prev'] = 'apple';

当然,这是以英里(0.0005)计算的冠军。所有这些都不是真正相关的,我只是好奇并想与阅读本文的任何人分享。

应该可以保存循环。

应该可以保存循环。

您正在寻找
数组搜索功能:


您正在查找
array\u search
函数:


此外,
array\u keys()
如果您需要的不仅仅是第一个,那么它可能会很有用:问题是它肯定是独特的,但很简洁。我从来都不知道array_keys使用了第二个参数。工作起来就像我的魅力一样。我甚至做了一些快速的microtime()测试,它在一个小阵列上的运行速度大约是原来的两倍。不知道一个大的会怎么样。:)此外,
array\u keys()
如果您需要的不仅仅是第一个,那么它可能会很有用:问题是它肯定是独特的,但很简洁。我从来都不知道array_keys使用了第二个参数。工作起来就像我的魅力一样。我甚至做了一些快速的microtime()测试,它在一个小阵列上的运行速度大约是原来的两倍。不知道一个大的会怎么样。:)抱歉,但我确实觉得有必要挑剔一下你的术语:“苹果”、“香蕉”和“梨”在你的例子中不是关键,它们是价值观。它们将是以下示例中的键:array(“apple”=>“round”、“banana”=>“long”、“pear”=>“oblong”)。你称之为$current_key的东西最好描述为游标或索引。是的,我在示例中使用该值来查找键。。。您会注意到$current_key的值设置为数组索引,而不是值。然而,这个标题是错误的,因为我得到了一个我知道是唯一的值的索引:)对不起,但我确实觉得有必要挑剔一下你的术语:“苹果”、“香蕉”和“梨”在你的例子中不是关键,它们是值。它们将是以下示例中的键:array(“apple”=>“round”、“banana”=>“long”、“pear”=>“oblong”)。你称之为$current_key的东西最好描述为游标或索引。是的,我在示例中使用该值来查找键。。。您会注意到$current_key的值设置为数组索引,而不是值。但是,标题是错误的,因为我得到的是一个索引,用于一个我知道是唯一的值:)
$key = array_search('banana', $items);
$current_key=array_search('banana',$items);