PHP中的(对象)数组(key => value)的反转是什么?

时间:2012-03-26 13:49:24

标签: php arrays oop object

当您在PHP中知道其值时,是否有快速返回密钥的方法?

例如,如果你有:

$Numbers = (object) array ( "0" => 0, "1" => 1, "2" => 3, "3" => 7, "4" => 13 );

有办法回归:

echo re(13);   // Print 4 

我能想到的一种方法是专门为此建立一个功能,但我想知道是否有更好的方法。

5 个答案:

答案 0 :(得分:7)

array_search

$key = array_search(13, (array) $Numbers);

请参阅http://ua2.php.net/array_search

答案 1 :(得分:3)

正如其他几位人士所说,array_search做了你所要求的。但是如果你想要一个包含值而不是第一个键的所有键的数组,你可以使用array_keys

print_r(array_keys($Numbers, 13)); // print Array ( [0] => 4 )

http://www.php.net/manual/en/function.array-keys.php

答案 2 :(得分:2)

http://php.net/array_search

echo array_search($valToSearch, (array) $Numbers);

答案 3 :(得分:2)

如果您确定自己拥有唯一的密钥:

$flipped = array_flip($array);
$key = $flipped[$knownValue];
return $key;

否则,请使用array_search:

return array_search($knownValue, $array);

如果您执行大量查找并且具有唯一值,则第一种方法可能会更好。第二种方法在多个值的情况下返回第一个匹配键。

答案 4 :(得分:1)