PHP: Получить ключ из массива?
Я уверен, что это супер простая и встроенная функция в PHP, но я ее еще не видел.
Вот что я делаю в данный момент:
foreach($array as $key => $value) {
echo $key; // Would output "subkey" in the example array
print_r($value);
}
Могу ли я вместо этого сделать что-то вроде следующего и тем самым избавить себя от написания "$key => $value" в каждом цикле foreach? (псевдокод)
foreach($array as $subarray) {
echo arrayKey($subarray); // Will output the same as "echo $key" in the former example ("subkey"
print_r($value);
}
Спасибо!
Массив:
Array
(
[subKey] => Array
(
[value] => myvalue
)
)
8 answers
Вы можете использовать ключ():
<?php
$array = array(
"one" => 1,
"two" => 2,
"three" => 3,
"four" => 4
);
while($element = current($array)) {
echo key($array)."\n";
next($array);
}
?>
Используйте array_search
функция.
Пример из php.net
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array); // $key = 1;
$foo = array('a' => 'apple', 'b' => 'ball', 'c' => 'coke');
foreach($foo as $key => $item) {
echo $item.' is begin with ('.$key.')';
}
$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));
Если это цикл foreach
, как вы описали в вопросе, использование $key => $value
является быстрым и эффективным.
Если вы хотите быть в цикле foreach
, то foreach($array as $key => $value)
определенно является рекомендуемым подходом. Воспользуйтесь преимуществами простого синтаксиса, когда его предлагает язык.
Другой способ использовать ключ($array) в цикле foreach - использовать next($array) в конце цикла, просто убедитесь, что каждая итерация вызывает функцию next() (в случае, если у вас сложное ветвление внутри цикла)
Попробуйте это
foreach(array_keys($array) as $nmkey)
{
echo $nmkey;
}