183 votes

PHP - Obtenir le nom de la clé d'une valeur de tableau

J'ai un tableau comme le suivant :

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 trouver l'index de $arr['firstStringName'] de sorte que je puisse faire une boucle à travers array_keys($arr) et retourner la chaîne de clés 'firstStringName' par son indice. Comment puis-je faire cela ?

0 votes

Pouvez-vous élaborer un cas d'utilisation de ce que vous essayez d'obtenir ?

368voto

zrvan Points 1918

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

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

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

23 votes

array_filter() peut être utilisé si vous avez besoin de retourner tous les résultats correspondants au lieu du premier résultat correspondant, car il préserve les clés.

5 votes

Quelque chose qui vaut la peine d'être noté ici : cette solution ne fonctionnait pas pour moi, jusqu'à ce que je découvre que le tri du tableau (sort($arr)) supprime les noms des clés, et se rabat sur les valeurs d'index par défaut 0,1,2,etc. Donc si vous triez, utilisez asort (asort($arr)). Cela permet de conserver les valeurs des clés. php.net/manuel/fr/fonction.asort.php

71voto

Mark Baker Points 90240
key($arr);

retournera la valeur de la clé pour l'élément courant du tableau.

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

0 votes

AnthonyRutledge Cela ne renverra que ce que le pointeur interne est actuellement "pointé". Si nous avons besoin d'une autre référence, nous devons utiliser la méthode zrvans, qui recherche spécifiquement la valeur demandée.

50voto

rwb Points 640

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

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

Véase Manuel PHP

0 votes

Je pense qu'il cherche la fonction php array_search - php.net/manual/fr/function.array-search.php

0 votes

C'est bien, merci.

21voto

Marc B Points 195501

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 donnerait

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

16voto

Rajat Singhal Points 7117

Oui, vous pouvez, en fait, php est l'un des rares langages qui fournissent un tel support

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

}

0 votes

Ce n'est pas une réponse pertinente comme par la recherche et plus de consommation de temps Codage moins efficace

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X