web-dev-qa-db-fra.com

PHP: Obtenir la clé du tableau?

Je suis sûr que c'est une fonction très simple et intégrée à PHP, mais je ne l'ai pas encore vue.

Voici ce que je fais pour le moment:

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

Est-ce que je pourrais faire quelque chose comme ce qui suit à la place et éviter ainsi d'écrire "$ key => $ value" dans chaque boucle foreach? (psuedocode)

foreach($array as $subarray) {
    echo arrayKey($subarray); // Will output the same as "echo $key" in the former example ("subkey"
    print_r($value);
}

Merci!

Le tableau:

Array
(
    [subKey] => Array
        (
            [value] => myvalue
        )

)
53
Industrial

Vous pouvez utiliser key () :

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

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

Utilisez le array_search fonction.

Exemple tiré de 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;
40
Sarfraz
$foo = array('a' => 'Apple', 'b' => 'ball', 'c' => 'coke');

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

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

Si elle IS une boucle foreach comme vous l'avez décrit dans la question, utilisez $key => $value est rapide et efficace.

6
Dogbert

Si vous voulez être dans une boucle foreach, alors foreach($array as $key => $value) est définitivement l'approche recommandée. Tirez parti de la syntaxe simple lorsqu'un langage le propose.

1
Mike Lang

Voici une solution générique que vous pouvez ajouter à votre bibliothèque Array. Tout ce que vous avez à faire est de fournir la valeur associée et le tableau cible!

Manuel PHP: array_search () (similaire à .indexOf () dans d'autres langues)

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;
}
0

Essaye ça

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

Une autre façon d'utiliser key ($ array) dans une boucle foreach consiste à utiliser next ($ array) à la fin de la boucle, assurez-vous simplement que chaque itération appelle la fonction next () (si vous avez des ramifications complexes à l'intérieur de la boucle).

0
B Rad C