Est-il possible de trouver l' foreach
index?
en for
boucle comme suit:
for ($i = 0; $i < 10; ++$i) {
echo $i . ' ';
}
$i
vous donnera l'index.
Dois-je utiliser la for
boucle ou existe-t-il un moyen d'obtenir l'index dans la foreach
boucle?
$myarr['foo'] = 'bar';
cette méthode échouevatiable++;
à chaque itération. La manière traditionnelle, mais a toujours fonctionné.Vous pouvez mettre un hack dans votre
foreach
, comme un champ incrémenté à chaque parcours, ce qui est exactement ce que lafor
boucle vous donne dans un tableau indexé numériquement. Un tel champ serait un pseudo-index nécessitant une gestion manuelle (incréments, etc.).A
foreach
vous donnera votre index sous la forme de votre$key
valeur, donc un tel hack ne devrait pas être nécessaire.par exemple, dans un
foreach
la source
Il convient de noter que vous pouvez appeler
key()
n'importe quel tableau pour trouver la clé actuelle activée. Comme vous pouvez le devinercurrent()
, la valeur actuellenext()
sera renvoyée et le pointeur du tableau sera déplacé vers l'élément suivant.la source
$key
from$key=>$value
) ... Cependant, je parie que les performances inférieures sont non significatives / perceptibles dans une boucle simple.Owen a une bonne réponse. Si vous ne voulez que la clé et que vous travaillez avec un tableau, cela peut également être utile.
la source
foreach(array_keys($array) as $index=>$key)
.Vous pouvez créer en
$i
dehors de la boucle et faire$i++
en bas de la boucle.la source
Ces deux boucles sont équivalentes (sauf les garde-corps de sécurité bien sûr):
par exemple
la source
Je pense que la meilleure option est la même:
c'est facile et normalement
la source
Jonathan a raison. Les tableaux PHP agissent comme une table de mappage des clés de correspondance avec les valeurs. dans certains cas, vous pouvez obtenir un index si votre tableau est défini, comme
votre sortie sera
auquel cas chaque élément du tableau a un index connaissable, mais si vous faites quelque chose comme le suivant
vous n'obtenez aucune sortie. Cela se produit car les tableaux en PHP ne sont pas des structures linéaires comme ils le sont dans la plupart des langages. Ils ressemblent davantage à des tables de hachage qui peuvent ou non avoir des clés pour toutes les valeurs stockées. Par conséquent, foreach n'utilise pas d'index pour les parcourir, car ils n'ont un index que si le tableau est défini. Si vous avez besoin d'un index, assurez-vous que vos tableaux sont entièrement définis avant de les parcourir et utilisez une boucle for.
la source
$var[] = 10;
(voir le lien PHP pour le guide), donc la deuxièmefor
boucle sort les résultats attendus.Les tableaux PHP ont des pointeurs internes, essayez donc ceci:
Fonctionne bien pour moi (seulement testé de manière très préliminaire cependant).
la source
Je le fais normalement lorsque je travaille avec des tableaux associatifs:
Cela fonctionnera également très bien avec les tableaux non associatifs. $ key sera la valeur d'index. Si vous préférez, vous pouvez également le faire:
la source
Je voudrais ajouter ceci, je l'ai utilisé dans laravel pour simplement indexer ma table:
Mon code:
la source
$loop
variable ne peut pas être utilisée car elle est demandée pour PHP général.J'ai résolu de cette façon, quand j'ai dû utiliser l'index et la valeur foreach dans le même contexte:
la source
la source