Page 1 sur 1

Problème avec la boucle for et la condition if

Posté : 10 mai 2009, 14:19
par John80
Bonjour,

j'essaie de mettre le résultat d'une boucle dans la condition d'un if, je m'explique
$string = $_GET['v'];

$ligne = 0;
$ligneafaire = 5;
$nbligne= $ligne + $ligneafaire;
for ($i=$ligne; $i<$nbligne; $i++) {

if ($i == $nbligne - 1) {
	$texte = "(substr($string, $i, 1) == 1)";
}else {
	$texte  = "(substr($string, $i, 1) == 1)&&";
}echo $texte;
} 
if ($texte) { echo "UN DES CHIFFRE A 1"; } else { echo "UN DES CHIFFRE A 0"; }
J'obtient avec ma boucle

Code : Tout sélectionner

(substr(00000000000000000000, 0, 1) == 1)&&(substr(00000000000000000000, 1, 1) == 1)&&(substr(00000000000000000000, 2, 1) == 1)&&(substr(00000000000000000000, 3, 1) == 1)&&(substr(00000000000000000000, 4, 1) == 1)
et j'aimerais que dans le if qu'il suit apparaissent ceci

Code : Tout sélectionner

if ((substr(00000000000000000000, 0, 1) == 1)&&(substr(00000000000000000000, 1, 1) == 1)&&(substr(00000000000000000000, 2, 1) == 1)&&(substr(00000000000000000000, 3, 1) == 1)&&(substr(00000000000000000000, 4, 1) == 1))
Voila mon problème en espérant que cela soit possible.

Merci d'avance.

Posté : 10 mai 2009, 17:03
par orgerix
Le problème, c'est que dans ta boucle, tu crée une chaine et qu'ensuite tu veux l'utiliser comme condition.

Tu as, je pense deux solution.

La première, dont je suis sur qu'elle marche, c'est tout simplement de faire
if(eval($text))
Mais bon, c'est moche, très moche.

Il y a une autre possibilité, je pense même si je suis pas sur qi est beaucoup mieux (si ele marche). Tu construit au fur et à mesure un bouléen qui contiendra le résultat de ta condition.
//on initialise le booléen à 1 puisque c'est le neutre de l'opérateur &&
$bool=1;
for() {
   if() {
      $bool=$bool && conditon1
   }
   else {
      $bool=$bool && conditon2
  }
}
if($bool) {


}

Posté : 10 mai 2009, 18:56
par John80
J'ai tester la première solution et sa na pas l'air de fonctionner, sa me retourne:

Code : Tout sélectionner

Parse error: parse error in C:\Program Files\wamp\www\test/test.php(17) : eval()'d code on line 1
Peut être ai je mal place le code ?

Posté : 10 mai 2009, 20:41
par orgerix
Montre moi ce que tu as dans ton code.

Posté : 10 mai 2009, 22:29
par John80
J'ai
$string = $_GET['v'];

$ligne = 0;
$ligneafaire = 5;
$nbligne= $ligne + $ligneafaire;

for ($i=$ligne; $i<$nbligne; $i++) {

if ($i == $nbligne - 1) {
$texte = "(substr('$string', $i, 1); == 1)";
}else {
$texte = "(substr('$string', $i, 1); == 1)&&";
}echo $texte."<br><br>";
}

if(eval($texte)) { echo "UN DES CHIFFRE A 1"; } else { echo "UN DES CHIFFRE A 0"; }
$string etant une serie de 0 ou de 1