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
        )

)
Author: aksu, 2010-07-23

8 answers

Вы можете использовать ключ():

<?php
$array = array(
    "one" => 1,
    "two" => 2,
    "three" => 3,
    "four" => 4
);

while($element = current($array)) {
    echo key($array)."\n";
    next($array);
}
?>
 60
Author: vtorhonen, 2010-07-23 12:28:52

Используйте 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;
 37
Author: Sarfraz, 2010-07-23 11:56:48
$foo = array('a' => 'apple', 'b' => 'ball', 'c' => 'coke');

foreach($foo as $key => $item) {
  echo $item.' is begin with ('.$key.')';
}
 28
Author: Somwang Souksavatd, 2012-08-26 13:27:08

$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));

 13
Author: sushil bharwani, 2010-07-23 11:58:47

Если это цикл foreach, как вы описали в вопросе, использование $key => $value является быстрым и эффективным.

 5
Author: Dogbert, 2010-07-23 12:17:17

Если вы хотите быть в цикле foreach, то foreach($array as $key => $value) определенно является рекомендуемым подходом. Воспользуйтесь преимуществами простого синтаксиса, когда его предлагает язык.

 1
Author: Mike Lang, 2015-06-05 00:22:04

Другой способ использовать ключ($array) в цикле foreach - использовать next($array) в конце цикла, просто убедитесь, что каждая итерация вызывает функцию next() (в случае, если у вас сложное ветвление внутри цикла)

 0
Author: B Rad C, 2013-02-02 23:32:45

Попробуйте это

foreach(array_keys($array) as $nmkey)
    {
        echo $nmkey;
    }
 0
Author: Chamandeep, 2016-11-08 11:09:48