Подтвердить что ты не робот

PHP: получить ключ от массива?

Я уверен, что это супер простая и встроенная функция в PHP, но я ее еще не видел.

Вот что я делаю на данный момент:

foreach($array as $key => $value) {
    echo $key; // Would output "subkey" in the example array
    print_r($value);
}

Могу ли я сделать что-то вроде следующего и тем самым избавить себя от написания "$ key = > $value" в каждом цикле foreach? (Psuedocode)

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
        )

)
4b9b3361

Ответ 1

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

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

while($element = current($array)) {
    echo key($array)."\n";
    next($array);
}
?>

Ответ 2

Используйте 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;

Ответ 3

$foo = array('a' => 'apple', 'b' => 'ball', 'c' => 'coke');

foreach($foo as $key => $item) {
  echo $item.' is begin with ('.$key.')';
}

Ответ 4


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

Ответ 5

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

Ответ 6

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

Ответ 7

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

Ответ 8

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

foreach(array_keys($array) as $nmkey)
    {
        echo $nmkey;
    }

Ответ 9

Вот общее решение, которое вы можете добавить в свою библиотеку Array. Все, что вам нужно сделать, это указать соответствующее значение и целевой массив!

Руководство по PHP: array_search() (аналогично .indexOf() на других языках)

public function getKey(string $value, array $target)
{
    $key = array_search($value, $target);

    if ($key === null) {
        throw new InvalidArgumentException("Invalid arguments provided. Check inputs. Must be a (1) a string and (2) an array.");
    }

    if ($key === false) {
        throw new DomainException("The search value does not exists in the target array.");
    }

    return $key;
}