Si vous voulez que l'index, la clé et la valeur, ce qui équivaut à ce Python:
for ii, (key, value) in enumerate(my_dict.items()):
print ii
print key
print value
Vous pouvez créer une fonction d'énumération en PHP qui enveloppe vos objets. Ce n'est pas destiné à être efficace (il pré-itère et rassemble tout) mais il peut être syntaxiquement pratique.
function enumerate($array) {
class IterObject {
public $index;
public $key;
public $value;
}
$collect = array();
$ii = 0;
foreach ($array as $key => $value) {
$iter = new IterObject();
$iter->index = $ii;
$iter->key = $key;
$iter->value = $value;
array_push($collect, $iter);
$ii++;
}
return $collect;
}
Exemple d'utilisation:
foreach (enumerate($my_array) as $iter) {
echo $iter->index;
echo $iter->key;
echo $iter->value;
}
+1: le deuxième exemple utilisant 'array_values' est essentiellement ce que fait enumerate' (bien sûr' enumerate' accepte aussi les itérateurs, donc vous aurez besoin d'un peu plus de code pour gérer ce cas) ... – ircmaxell
En plus de @ Le commentaire d'ircmaxell, PHP a 'iterator_to_array ($ iterator, false)' qui va créer un tableau depuis l'itérateur. 'false' lui dit de ne pas utiliser les clés de l'itérateur, mais d'utiliser une valeur incrémentée comme' array_values'. – Izkata
Lien de documentation pour les fainéants: ['array_values'] (http://php.net/manual/fr/function.array-values.php). Il y a aussi ['array_keys'] (http://php.net/manual/fr/function.array-keys.php) qui fait la même chose pour les clés d'un tableau associatif. –