Что является обратным (массив) (ключ => значение) в PHP? - PullRequest
2 голосов
/ 26 марта 2012

Есть ли быстрый способ вернуть ключ, когда вы знаете его значение в PHP?

Например, если у вас есть:

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

, есть ли способ вернуть:

echo re(13);   // Print 4 

Один из способов, который я мог придумать, - это создать функцию специально для этого, но мне было интересно, есть ли лучший способ.

Ответы [ 5 ]

7 голосов
/ 26 марта 2012

Существует array_search:

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

См. http://ua2.php.net/array_search

3 голосов
/ 26 марта 2012

Как уже упоминали несколько других людей, 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 голосов
/ 26 марта 2012

, если вы уверены, что у вас есть уникальные ключи:

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

В противном случае используйте array_search:

return array_search($knownValue, $array);

Первый подход может быть лучше, если вы выполните несколько поисков и будете иметь уникальные значения. Второй подход возвращает первый соответствующий ключ в случае нескольких значений.

2 голосов
/ 26 марта 2012

http://php.net/array_search

echo array_search($valToSearch, (array) $Numbers);
1 голос
/ 26 марта 2012
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...