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


158

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

J'ai besoin de trouver l'index de $arr['firstStringName']pour que je puisse boucler array_keys($arr)et renvoyer la chaîne de clé 'firstStringName'par son index. Comment puis je faire ça?


Pouvez-vous élaborer avec un cas d'utilisation de ce que vous essayez de réaliser?
nikc.org

Réponses:


333

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);

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


21
array_filter()peut être utilisé si vous devez renvoyer tous les résultats correspondants au lieu du premier correspondant, car il préserve les clés.
Mike Lyons

5
Quelque chose que je pense intéressant de noter ici: cette solution ne fonctionnait pas pour moi, jusqu'à ce que je découvre que le tri du tableau (sort ($ arr)) supprime les noms de clé et recourt aux valeurs d'index par défaut 0,1,2, etc. Donc, si vous triez, utilisez asort (asort ($ arr)). Cela maintient les valeurs clés. php.net/manual/en/function.asort.php
Rich701

63
key($arr);

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

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


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


18

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

$arr[$key]

ce qui signifierait 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);

te donnerais

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

16

Oui, vous pouvez en fait php est l'un des rares langages à fournir un tel support.

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

}

Ce n'est pas une réponse pertinente selon la recherche et prend plus de temps. Codage moins efficace
Rishab

13

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

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

11

Voici une autre option

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


4

vous pouvez utiliser la fonction clé 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: clé - Manuel

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.