Existe-t-il un moyen d'itérer dans un tableau mais d'effectuer une opération sur tous les autres éléments? ie Si j'ai un tableau avec 13 éléments, comment puis-je faire quelque chose pour seulement les éléments 2,4,6,8,10 et 12?itération sélective de la matrice dans php
Répondre
pour fixer cletuses repondre pour plus de vitesse et de corriger les fautes de frappe:
for ($i = 1, $j = count($array); $i < $j; $i += 2) {
// code
}
for ($i=1; $i<sizeof($array); $i+=2) {
// do stuff to $array[$i]
}
Vous pouvez l'intégrer dans une trop foreach:
$i = 0;
foreach ($array as $v) {
if ($i++ & 1) continue;
// do stuff to $v
}
Note:$i & 1
est équivalent à ($i % 2) == 1
(ou tout simplement $i % 2
).
si la dernière partie de l'instruction est $ i + = 2? – musoNic80
pas sûr d'obtenir l'exemple foreach. Pourrais-tu m'expliquer un peu plus simple ?! – musoNic80
Fondamentalement, une boucle foreach(), contrairement à une boucle normale for(), n'a pas de compteur d'index, donc $ i est utilisé comme indice de substitution. Il est incrémenté à chaque itération. $ i & 1 retournera vrai pour les valeurs 1, 3, 5, 7. Il commence à 0, donc il retourne vrai pour chaque deuxième élément (ce qui veut dire les ignorer). – cletus
foreach($array as $val) {
if(($i++ % 2) == 0) {
...do stuff here...
}
}
Voici comment je le ferais, à l'exception des accolades. La logique est d'une simplicité déconcertante et cela reflète bien le fait qu'il est facile de l'étendre avec un autre sans réécrire la logique de la boucle. – Kris
Les réponses sont super, merci. Puis-je ajouter un exemple du monde réel? J'ai un tableau qui a 2 éléments pour chaque jour de la semaine. (Numérotation commençant à 0). Je veux une boucle qui fera quelque chose sur chaque jour et non sur chaque élément. Comment puis-je utiliser les réponses que vous avez données pour y parvenir? Post-scriptum Il n'y a pas encore de code à poster, je suis juste en train d'essayer de le faire d'abord !!! – musoNic80
si votre tableau est similaire $ array = array ('mon1', 'mon2', 'tue1', 'tue2' ... 'fri2'); et suit toujours un modèle distinct, alors vous pouvez utiliser ce code comme il est écrit. Si vous vouliez vous assurer qu'il se produisait tous les jours, vous auriez besoin de le valider d'une manière ou d'une autre. C'est difficile à dire sans vraiment savoir ce qui se passe et ce que vous voulez sortir. –
Une autre variation sur les réponses déjà affichées ... similaires à la réponse de Phil Carter. Si le tableau a un index numérique, vous pouvez l'utiliser dans foreach au lieu de gérer une variable de compteur séparée:
foreach ($array as $i => $v) {
if (! ($i % 2)) {
// do stuff to $v
}
- 1. Fusion sélective dans la sous-version
- 2. Comment construire cette matrice php?
- 3. Compilation de ressources sélective dans .NET?
- 4. SQL Server - Insertion sélective de champs dans la table temporaire
- 5. Itération dans JQuery
- 6. transposition de la matrice dans XSLT
- 7. Exécution sélective de JavaScript lors du chargement de la page
- 8. Déterminer la matrice de transformation
- 9. WF - Création d'une liste sélective
- 10. Galerie Itération
- 11. Vector à la matrice syntaxe dans Matlab
- 12. Recordset Itération
- 13. Bits d'itération Java dans la matrice d'octets
- 14. fonction PHP valeur de retour matrice emboîtée enlevé
- 15. Comment attraper la dernière itération dans $ .each dans jQuery?
- 16. PHP: Comment déterminez-vous chaque ième itération d'une boucle?
- 17. Convertir une matrice décimale en une matrice binaire dans SciPy
- 18. Java int ... notation de la matrice
- 19. C# Itération de grand arbre
- 20. pour chaque itération de boucle
- 21. Problème avec la matrice 2D de JButton
- 22. Comment ignorer la première itération d'un $ .each()?
- 23. Itération sur CssStyleCollection
- 24. Report Matrice de remplissage
- 25. matrice de boutons
- 26. Matrice statique ou matrice allouée dynamique
- 27. Relation NSManagedObject NSSet itération
- 28. Exécution sélective d'une guerre dans les applications Web Tomcat
- 29. Matrice de Python Matlab
- 30. Itération d'une jointure NHibernate
J'ai appris quelque chose, je ne savais pas que vous pouviez assigner plus d'une variable dans la première expression (ou les suivantes). Merci! –
Vitesse? Au mieux "mettre en cache" la taille du tableau est la micro-optimisation. C'est également sémantiquement équivalent. Que faire si la taille du tableau change pendant la boucle? – cletus
@phil, np. content d'aider :) @cletus, si votre tableau change pendant la boucle, vous devriez utiliser un foreach ou mettre à jour $ j dans la boucle. C'est une optimisation de vitesse et valide. Imaginez un tableau de valeurs de 1000000 puis vous voyez ce que je veux dire. – Ozzy