PHP中(object)数组(key=>;value)的反向是什么


What is the reverse of (object) array (key => value) in PHP?

当您在PHP中知道键的值时,有没有一种快速返回键的方法?

例如,如果您有:

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

有返回的方法吗:

echo re(13);   // Print 4 

我可以想到的一种方法是专门为此构建一个函数,但我想知道是否有更好的方法。

存在array_search:

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

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

正如其他一些人所提到的,array_search会按照您的要求执行。但是,如果您想要一个包含值而不是仅包含第一个值的所有键的数组,则可以使用array_keys

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

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

如果您确信您有唯一的密钥:

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

否则,使用array_search:

return array_search($knownValue, $array);

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

http://php.net/array_search

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

http://php.net/manual/en/function.array-search.php