Fonctions for ou while avec des variables

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Fonctions for ou while avec des variables

par Superpilou » 28 juil. 2009, 22:26

Si on fait deux boucles for à chaque fois on peut mettre les mêmes variables pour l'incrémentation comme $i. En effet dans les boucles for elles redeviennent égales à 0.
Par contre dans les boucles while à part si on le précisé entre on ne peut pas utiliser la même variable pour l'incrémentation

Merci c'etait bien ca...

par desparlsp » 28 juil. 2009, 22:23

Merci,

Ca marche impec... :wink:

Mon probleme venait de la variable $i, qui etait deja declare dans une autre fonction, ce qui me donnais des resultats bidons....Je l'ai remplace par une autre....

Merci infiniment.

David

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par Ryle » 28 juil. 2009, 18:16

Bon alors, déjà, pourquoi stocker la valeur de tes variables (dont tu peux aisément changer l'index) dans d'autres variables (pour lesquelles tu vas te galérer à changer le nom dynamiquement) ? On va déjà diviser par deux la difficulté en utilisant que l'une d'entre elles (et on en profite pour virer les guillemets qui ici ne servent à rien :)) :
if (empty($description[0])) 
{ 
} 
else 
{ 
echo mafonction($transcriptionCRLF,$description[0],$nbchar); 
} 

if (empty($description[1])) 
{ 
} 
else 
{ 
echo search($transcriptionCRLF,$description[1],$nbchar); 
} 
Etape 2, pourquoi faire un if() qui va tester une condition si tu ne fais rien lorsque celle-ci est vraie ? Si tout ce qui t'intéresse, c'est le cas où elle est fausse, il suffit d'inverser la condition, et hop resimplification :
if (!empty($description[0])) // un "!" devant une condition signifie que l'on veut son contraire... donc que la variable ne soit pas vide
{ 
echo mafonction($transcriptionCRLF,$description[0],$nbchar); 
} 

if (!empty($description[1])) 
{ 
echo search($transcriptionCRLF,$description[1],$nbchar); 
} 
C'est déjà mieux :) Reste plus qu'à y introduire une boucle (en supposant que mafonction() et search() ne soient qu'une seule et meme fonction, parce que sinon, on va pas pouvoir boucler :))

Pour un for(), il te faut définir une condition de départ, (par exemple la variable $i égal 0), une condition d'exécution (par ex. tant que $i est inférieur ou égale à 1) et une action a mener entre chaque itération (genre incrémenter $i de 1). Reste plus qu'à traduire ça pour php :
for ($i=0; $i<=1; $i++) { ... }
Et on applique, sachant que $i va prendre tour à tour les valeur 0 et 1 :
for ($i=0; $i<=1; $i++) 
{ 
  if (!empty($description[$i])) // les 0 et 1 sont remplacés par le $i
  { 
  echo mafonction($transcriptionCRLF,$description[$i],$nbchar); // idem ici
  } 
} 
Quant au while, c'est rigoureusement la même chose, c'est juste la syntaxe qui change :
$i = 0; // condition de départ
while ($i<=1) // condition d'éxécution
{ 
  $i++; // action entre chaque itération

  if (!empty($description[$i])) // les 0 et 1 sont remplacés par le $i
  { 
  echo mafonction($transcriptionCRLF,$description[$i],$nbchar); // idem ici
  } 
} 

Fonctions for ou while avec des variables

par desparlsp » 28 juil. 2009, 05:28

Bonjour a tous,

Je suis un peu perdu avec les boucles. Le but est de reduire et d'automatiser un appel de fonction avec une variable qui change a chaque fois.

J'ai le code suivant

Code : Tout sélectionner

$motext1="$description[0]"; $motext2="$description[1]"; if (empty($motext2)) { } else { echo mafonction($transcriptionCRLF,$motext2,$nbchar); } if (empty($motext3)) { } else { echo search($transcriptionCRLF,$motext3,$nbchar); }
Comme vous pouvez le voir il s'agirait de faire une boucle avec deux variables, l'une dans motext$var et l'autre dans $description [$var].

Mais je n'y arrive pas avec for ou bien while. Le script s'execute indefiniment et risque de faire saturer le serveur php et ma machine... :?

Le but serais de reduire ces lignes en une seule boucle du pour eviter d'ecrire 15 fois la meme condition if avec une deux variables qui changent....

Merci de pour vos aides.

David