У меня есть массив следующим образом:
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'
своим индексом. Как я могу это сделать?
Если у вас есть значение и вы хотите найти ключ, используйте array_search()
следующим образом:
$arr = array ('first' => 'a', 'second' => 'b', ); $key = array_search ('a', $arr);
$key
теперь будет содержать ключ для значения 'a'
(то есть 'first'
).
key($arr);
вернет значение ключа для текущего элемента массива
Если я правильно понимаю, вы не можете просто использовать:
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].
если вам нужно вернуть элементы массива с одинаковым значением, используйте функцию 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