web-dev-qa-db-fra.com

PHP - Récupère le nom de clé de la valeur du tableau

J'ai un tableau comme suit:

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'];

Je dois connaître l'index de $arr['firstStringName'] pour pouvoir parcourir array_keys($arr) et retourner la chaîne de clé 'firstStringName' par son index. Comment puis je faire ça?

127
headacheCoder

Si vous avez une valeur et que vous voulez trouver la clé, utilisez array_search() comme ceci:

$arr = array ('first' => 'a', 'second' => 'b', );
$key = array_search ('a', $arr);

$key contiendra maintenant la clé de la valeur 'a' (c'est-à-dire 'first').

275
zrvan
key($arr);

renverra la valeur de clé pour l'élément de tableau actuel

http://uk.php.net/manual/en/function.key.php

53
Mark Baker

Si je comprends bien, ne pouvez-vous pas simplement utiliser:

foreach($arr as $key=>$value)
{
  echo $key;
}

Voir manuel PHP

34
rwb

Si le nom est dynamique, alors vous devez avoir quelque chose comme

$arr[$key]

ce qui voudrait dire que $ key contient la valeur de la clé.

Vous pouvez utiliser array_keys() pour obtenir TOUTES les clés d’un tableau, par exemple.

$arr = array('a' => 'b', 'c' => 'd')
$x = array_keys($arr);

vous donnerais

$x = array(0 => 'a', 1 => 'c');
18
Marc B

Oui, vous pouvez en déduire que php est l’une des rares langues à fournir un tel support.

foreach($arr as $key=>$value)
{

}
15
Rajat Singhal

si vous devez renvoyer un tableau d'éléments de même valeur, utilisez la fonction array_keys()

$array = array('red' => 1, 'blue' => 1, 'green' => 2);
print_r(array_keys($array, 1));
9
aiswarya

utilisez array_keys() pour obtenir un tableau de toutes les clés uniques.

Notez qu'un tableau avec des clés nommées comme votre $arr peut également être accédé avec des index numériques, comme $arr[0].

http://php.net/manual/en/function.array-keys.php

7
jan

Voici une autre option

$array = [1=>'one', 2=>'two', 3=>'there'];
$array = array_flip($array);
echo $array['one']; 
5
Demissew

vous pouvez utiliser la fonction key de php pour obtenir le nom de la clé:

<?php
    $array = array(
    'fruit1' => 'Apple',
    'fruit2' => 'orange',
    'fruit3' => 'grape',
    'fruit4' => 'Apple',
    'fruit5' => 'Apple');

    // this cycle echoes all associative array
    // key where value equals "Apple"
    while ($fruit_name = current($array)) {
      if ($fruit_name == 'Apple') {
        echo key($array).'<br />';
      }
    next($array);
     }
?>

comme ici: PHP: key - Manual

1
adespotos