Problème avec la boucle for et la condition if

Petit nouveau ! | 3 Messages

10 mai 2009, 14:19

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.

Mammouth du PHP | 693 Messages

10 mai 2009, 17:03

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) {


}

Petit nouveau ! | 3 Messages

10 mai 2009, 18:56

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 ?

Mammouth du PHP | 693 Messages

10 mai 2009, 20:41

Montre moi ce que tu as dans ton code.

Petit nouveau ! | 3 Messages

10 mai 2009, 22:29

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