83 votes

php: comment obtenir une clé de tableau associatif à partir d'un index numérique?

Si j'ai:

 $array = array( 'one' =>'value', 'two' => 'value2' );
 

Comment puis-je récupérer la chaîne one de $array[1] ?

127voto

deceze Points 200115

Vous n'avez pas. Votre tableau n'ont pas de clé [1]. Vous pouvez:

  • Faire un tableau qui contient les clés:

    $newArray = array_keys($array);
    echo $newArray[0];
    

    Mais la valeur "on" est à l' $newArray[0], pas [1].
    Un raccourci serait:

    echo current(array_keys($array));
    
  • Obtenir la première clé de la matrice:

     reset($array);
     echo key($array);
    
  • Obtenir la clé correspondant à la valeur "value":

    echo array_search('value', $array);
    

Tout cela dépend de ce que c'est exactement que vous voulez faire. Le fait est, [1] ne correspond pas à la "une" de toute la façon dont vous le tournez.

58voto

KennyTM Points 232647
 $array = array( 'one' =>'value', 'two' => 'value2' );

$allKeys = array_keys($array);
echo $allKeys[0];
 

Démo

12voto

Decko Points 1446

Ou si vous en avez besoin en boucle

 foreach ($array as $key => $value)
{
    echo $key . ':' . $value . "\n";
}
//Result: 
//one:value
//two:value2
 

2voto

plutov.by Points 8991
$array = array( 'one' =>'value', 'two' => 'value2' );
$keys  = array_keys($array);
echo $keys[0]; // one
echo $keys[1]; // two

0voto

Nicolas Points 86

Vous pourriez le faire de cette façon:

 function asoccArrayValueWithNumKey(&$arr, $key) {
   if (!(count($arr) > $key)) return false;
   reset($array);
   $aux   = -1;
   $found = false;
   while (($auxKey = key($array)) && !$found) {
      $aux++;
      $found = ($aux == $key);
   }
   if ($found) return $array[$auxKey];
   else return false;
}

$val = asoccArrayValueWithNumKey($array, 0);
$val = asoccArrayValueWithNumKey($array, 1);
etc...
 

Je n'ai pas essayé le code, mais je suis à peu près sûr que cela fonctionnera.

Bonne chance!

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