У меня есть массив как следующее:
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]
что означало бы, что $ key содержит значение ключа.
Ты можешь использовать array_keys()
получить ВСЕ ключи массива, например
$arr = array('a' => 'b', 'c' => 'd')
$x = array_keys($arr);
даст вам
$x = array(0 => 'a', 1 => 'c');
Да, вы можете сказать, что 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'];