PHP-obtenir l'index d'un élément à partir d'un tableau

Comment puis-je obtenir le numéro d'élément actuel lorsque je traverse un tableau?

Je connais count (), mais j'espérais qu'il y ait une fonction intégrée pour obtenir l'index de champ actuel, sans avoir à ajouter une variable de compteur supplémentaire.

Comme ceci:

foreach($array as $key => value)
  if(index($key) == count($array) ....
21
demandé sur Alex 2010-09-22 01:30:04

6 réponses

Vous devez utiliser la fonction key () .

key($array)

Devrait renvoyer la clé actuelle.

Si vous avez besoin de la position de la clé actuelle:

array_search($key, array_keys($array));
42
répondu Zahymaka 2010-09-21 21:37:41

Les tableaux PHP sont indexés en entier et indexés en chaîne. Vous pouvez même les mélanger:

array('red', 'green', 'white', 'color3'=>'blue', 3=>'yellow');

Que voulez-vous que l'index soit pour la valeur 'blue'? Est-il 3? Mais c'est en fait l'index de la valeur 'yellow', donc ce serait une ambiguïté.

Une autre solution pour vous consiste à forcer le tableau à une liste de valeurs indexées sur des entiers.

foreach (array_values($array) as $i => $value) {
  echo "$i: $value\n";
}

Sortie:

0: red
1: green
2: white
3: blue
4: yellow
11
répondu Bill Karwin 2010-09-21 21:40:39
foreach() {
    $i++;
    if(index($key) == $i){}
    //
}
4
répondu Galen 2010-09-21 21:35:32
function Index($index) {
    $Count = count($YOUR_ARRAY);
    if ($index <= $Count) {
        $Keys = array_keys($YOUR_ARRAY);
        $Value = array_values($YOUR_ARRAY);
        return $Keys[$index] . ' = ' . $Value[$index];
    } else {
        return "Out of the ring";
    }
}

echo 'Index : ' . Index(0);

Remplacez le ($YOUR_ARRAY)

0
répondu Сайф Абаза 2016-01-12 11:21:36

Un tableau ne contient pas d'index lorsque les éléments sont associatifs. Un tableau en php peut contenir des valeurs mixtes comme ceci:

$var = array("apple", "banana", "foo" => "grape", "carrot", "bar" => "donkey");   
print_r($var);

Vous Donne:

Array
(
    [0] => apple
    [1] => banana
    [foo] => grape
    [2] => carrot
    [bar] => donkey
)

Qu'essayez-vous d'accomplir puisque vous avez besoin de la valeur d'index dans un tableau associatif?

-2
répondu thomasmalt 2010-09-21 21:41:18

Il n'y a aucun moyen d'obtenir un position que vous voulez vraiment.
Pour le tableau associatif, pour déterminer la dernière itération, vous pouvez utiliser la variable compteur déjà mentionnée, ou déterminer la clé du dernier élément en premier:

end($array);
$last = key($array);
foreach($array as $key => value)
  if($key == $last) ....
-2
répondu Your Common Sense 2010-09-21 21:44:41