2010-06-02 34 views
23

你可以很容易地从一个键如下所示得到一个数组值:$value = array[$key]但是如果我有这个值并且我想要这个键。什么是最好的方式来获得它?如何从VALUE获取数组KEY?

回答

50

您可以使用array_search()查找第一个匹配键。

从手册:

$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red'); 

$key = array_search('green', $array); // $key = 2; 
$key = array_search('red', $array); // $key = 1; 
14

您可以使用array_keys函数。

例子:

$array = array("blue", "red", "green", "blue", "blue"); 
print_r(array_keys($array, "blue")); 

这将让该数组中的键值blue

+0

这是真的是OP是寻找什么?我对此有不同的理解(作为*值*的搜索)。 – 2010-06-02 17:50:19

+0

@Pekka:让我们来看看OP实际上在寻找什么,但请注意:) – Sarfraz 2010-06-02 17:52:27

+0

array_search和array_keys都适用于我,但是array_search不需要额外的步骤来获取array_keys返回的数组的第一个值。所以我会使用array_search,但对你们每个人都+1,因为它们都是很好的答案。 – 2010-06-02 18:07:21

0

没有非常简单的方法。循环键直到找到数组[$ key] == $ value

如果经常这样做,请创建一个反向数组/散列,将值映射回键。请记住,多个键可映射到单个值。

+0

我同意做一个反向映射,如果你需要做很多查找,但肯定有[一个简单的方法](http://stackoverflow.com/questions/2960066/best-way-to-get-array-key-从值/ 2960083#2960083) – 2010-06-02 17:41:47

+1

@barrycarter @ Michael_Mrozek,请参阅array_flip – mmattax 2010-06-02 17:48:21

0

您的数组值可以是重复的,因此不会给你确切的钥匙。然而,我认为是好的方式就像迭代和阅读密钥

3
$arr = array('mango', 'orange', 'banana'); 
$a = array_flip($arr); 
$key = $a['orange']; 
+0

最快 - 没有比较,只需用键翻转值。 – fkaufusi 2017-05-22 03:19:18

相关问题