PHP – Получить имя ключа для значения массива

У меня есть массив следующим образом:

function example() { /* some stuff here that pushes items with dynamically created key strings into an array */ return array( // now lets pretend it returns the created array 'firstStringName' => $whatEver, 'secondStringName' => $somethingElse ); } $arr = example(); // now I know that $arr contains $arr['firstStringName']; 

Мне нужно узнать индекс $arr['firstStringName'] чтобы я мог перебирать array_keys($arr) и возвращать ключевую строку 'firstStringName' своим индексом. Как я могу это сделать?

Solutions Collecting From Web of "PHP – Получить имя ключа для значения массива"

Если у вас есть значение и вы хотите найти ключ, используйте array_search() следующим образом:

 $arr = array ('first' => 'a', 'second' => 'b', ); $key = array_search ('a', $arr); 

$key теперь будет содержать ключ для значения 'a' (то есть 'first' ).

 key($arr); 

вернет значение ключа для текущего элемента массива

http://uk.php.net/manual/en/function.key.php

Если я правильно понимаю, вы не можете просто использовать:

 foreach($arr as $key=>$value) { echo $key; } 

См. Руководство по PHP

Если динамика имени, то вы должны иметь что-то вроде

 $arr[$key] 

что означает, что ключ $ содержит значение ключа.

Вы можете использовать array_keys() чтобы получить ВСЕ ключи массива, например

 $arr = array('a' => 'b', 'c' => 'd') $x = array_keys($arr); 

даст вам

 $x = array(0 => 'a', 1 => 'c'); 

Да, вы можете infact php – это один из немногих языков, которые предоставляют такую ​​поддержку.

 foreach($arr as $key=>$value) { } 

используйте array_keys (), чтобы получить массив всех уникальных ключей.

Обратите внимание, что массив с именованными ключами, такими как ваш $ arr, также можно получить с помощью числовых индексов, например $ arr [0].

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

если вам нужно вернуть элементы массива с одинаковым значением, используйте функцию array_keys ()

 $array = array('red' => 1, 'blue' => 1, 'green' => 2); print_r(array_keys($array, 1)); 

Вот еще один вариант

 $array = [1=>'one', 2=>'two', 3=>'there']; $array = array_flip($array); echo $array['one']; 

Проверьте документацию на array_keys()

Функция array_keys

вы можете использовать ключевую функцию php для получения имени ключа:

 <?php $array = array( 'fruit1' => 'apple', 'fruit2' => 'orange', 'fruit3' => 'grape', 'fruit4' => 'apple', 'fruit5' => 'apple'); // this cycle echoes all associative array // key where value equals "apple" while ($fruit_name = current($array)) { if ($fruit_name == 'apple') { echo key($array).'<br />'; } next($array); } ?> 

как здесь: PHP: key – Manual