PHP найти ключ элемента - PullRequest
       7

PHP найти ключ элемента

0 голосов
/ 28 октября 2009

у меня есть этот массив

Array
(
  [0] => a
  [1] => b
  [2] => c
  [3] => d
)

как я могу получить ключ элемента? (Например, a = 0, c = 2)

Ответы [ 6 ]

4 голосов
/ 28 октября 2009
<?php
$trans = array("a" => 1, "b" => 1, "c" => 2);
$trans = array_flip($trans);
print_r($trans);
?>

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

Использование array_search http://php.net/manual/en/function.array-search.php

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

$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array);   // $key = 1;
?>
3 голосов
/ 28 октября 2009

Использовать array_search ()

Выполняет поиск в массиве заданного значения и возвращает соответствующий ключ в случае успеха.

Пример # 1 Пример array_search ()

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

$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array);   // $key = 1;
?>
0 голосов
/ 28 октября 2009

Мне лично нравится решение @ SilentGhost, но вы бы понесли штраф за скорость, если выполняете более одного поиска, и в этот момент вы захотите следующее:

// assume you know you want the value for key 'c'
$array = ('a','b','c','d');
$keys = array_flip($array);
return $keys['c'];
0 голосов
/ 28 октября 2009

Если вы просто хотите, чтобы ключи использовали array_keys .

Если вы хотите перевернуть массив, как показано в вашем примере, используйте array_flip

0 голосов
/ 28 октября 2009

array_keys * * 1004

array_keys($arr, 'a');         # 0
array_keys($arr, 'c');         # 2
0 голосов
/ 28 октября 2009

Если вы хотите выполнить поиск, см. Array_search (http://www.php.net/manual/en/function.array-search.php)

Если вы перебираете его, вы можете использовать различный синтаксис:

foreach ($a as $key => $value) { ... }
foreach (array_keys($a) as $key) { $value = $a[$key]; ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...