[PHP] Problème avec la boucle for et if
Fermé
Jhon80
Messages postés
3
Date d'inscription
dimanche 10 mai 2009
Statut
Membre
Dernière intervention
10 mai 2009
-
10 mai 2009 à 16:00
empty Messages postés 837 Date d'inscription vendredi 25 juillet 2008 Statut Membre Dernière intervention 23 février 2016 - 11 mai 2009 à 11:31
empty Messages postés 837 Date d'inscription vendredi 25 juillet 2008 Statut Membre Dernière intervention 23 février 2016 - 11 mai 2009 à 11:31
A voir également:
- [PHP] Problème avec la boucle for et if
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Easy php - Télécharger - Divers Web & Internet
- Idm for mac - Télécharger - Téléchargement & Transfert
- Download instagram for pc - Télécharger - Divers Communication
- Whatsapp for pc - Télécharger - Messagerie
7 réponses
Bonjour
Je ne suis pas sûr d'avoir compris ce que tu veux, mais je pense que c'est
if (eval($texte)) {...
mais tu auras peut-être une surprise, je pense qu'il te manque des ' (ou des " ) autour de tes chaînes de 000000..
Je ne suis pas sûr d'avoir compris ce que tu veux, mais je pense que c'est
if (eval($texte)) {...
mais tu auras peut-être une surprise, je pense qu'il te manque des ' (ou des " ) autour de tes chaînes de 000000..
non, ce sont les ' qui te manquent. le 1er paramètre de substr doit être une chaîne, donc entouré de ', comme je te l'avais dit. Et si tu les as mis, tu as peut être oublié le ; à la fin de ton expression, à l'intérieur de l'expression évaluée.
Jhon80
Messages postés
3
Date d'inscription
dimanche 10 mai 2009
Statut
Membre
Dernière intervention
10 mai 2009
10 mai 2009 à 19:50
10 mai 2009 à 19:50
Voila j'ai essayer avec les ' et les ; mais rien n'y fait.
$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"; }
J'ai dut faire une erreur ailleurs mais bon je découvre cette fonction :)
$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"; }
J'ai dut faire une erreur ailleurs mais bon je découvre cette fonction :)
Utilisateur anonyme
10 mai 2009 à 20:25
10 mai 2009 à 20:25
Bonsoir,
J'ai essayé avec ce code :
J'ai mis des commentaires.
Et sur l'écran, j'ai :
UN DES CHIFFRE A 1
Je sais pas trop à quoi sert ton programme, donc je ne sais pas ce qu'il faut obtenir.
J'ai essayé avec ce code :
<?php $string = "vjoifj"; // Pour tester $ligne = 0; $ligneafaire = 5; $nbligne= $ligne + $ligneafaire; $texte=""; // J'ai rajouté ça for ($i=$ligne; $i<$nbligne; $i++) { if ($i == $nbligne - 1) { $texte .= "(substr('$string', $i, 1); == 1)"; // Un . après le $texte }else { $texte .= "(substr('$string', $i, 1); == 1)&&"; // Un . après le $texte }echo $texte."<br><br>"; } if($texte) { echo "UN DES CHIFFRE A 1"; } else { echo "UN DES CHIFFRE A 0"; } ?>
J'ai mis des commentaires.
Et sur l'écran, j'ai :
UN DES CHIFFRE A 1
Je sais pas trop à quoi sert ton programme, donc je ne sais pas ce qu'il faut obtenir.
Adenpra, je crois que tu n'as pas compris la différence qu'il y a entre if ($texte) et if (eval ($texte)).
Jhon80, Adenora a raison pour les . de $texte .=
Et tu as mis les ; n'importe où.
D'après ton programme, tu essayes d'évaluer (si tu n'avais pas oublié les ".")
Qu'est ce que ces ; viennent faire au milieu de l'expression ? C'est à la fin qu'il en faut, pas au milieu
De plus, si tu étais allé voir le manuel PHP pour l'instruction eval, tu aurais vu qu'il faut mettre un return si tu veux obtenir le résultat que tu recherches.
Et pourquoi distinguer dans ta boucle la dernière boucle des autres ? Tu ajoutes systématiquement ton expression avec && sans te poser de questions, quand tu as fini tu enlèves les deux derniers caractères.
Mais surtout, pourquoi utiliser une méthode aussi tordue pour faire ce test ? Pourquoi ne pas tester la présence d'un un à chaque boucle tout simplement, au lieu de fabriquer du code pour l'exécuter plus tard ?
Jhon80, Adenora a raison pour les . de $texte .=
Et tu as mis les ; n'importe où.
D'après ton programme, tu essayes d'évaluer (si tu n'avais pas oublié les ".")
(substr('$string', $i, 1); == 1)&&(substr('$string', $i, 1); == 1)
Qu'est ce que ces ; viennent faire au milieu de l'expression ? C'est à la fin qu'il en faut, pas au milieu
De plus, si tu étais allé voir le manuel PHP pour l'instruction eval, tu aurais vu qu'il faut mettre un return si tu veux obtenir le résultat que tu recherches.
Et pourquoi distinguer dans ta boucle la dernière boucle des autres ? Tu ajoutes systématiquement ton expression avec && sans te poser de questions, quand tu as fini tu enlèves les deux derniers caractères.
Mais surtout, pourquoi utiliser une méthode aussi tordue pour faire ce test ? Pourquoi ne pas tester la présence d'un un à chaque boucle tout simplement, au lieu de fabriquer du code pour l'exécuter plus tard ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
11 mai 2009 à 10:26
11 mai 2009 à 10:26
J'ai juste fait copier-coller de son code, j'ai pas regardé les fautes. ;(
Et j'ai testé, if (eval ($texte)) et ça ne fonctionne pas.
Et j'ai testé, if (eval ($texte)) et ça ne fonctionne pas.
Désolé si tu t'es sentie offensée, ça n'était pas mon intention. C'était juste pour rappeler que jhon80 avait besoin d'utiliser eval pour faire exécuter un code créé dynamiquement, ce qui semblait être son intention. Même si je dis plus loin qu'à mon avis créer du code est un moyen tordu pour obtenir le résultat recherché
if (eval ($texte)) marche très bien. Je l'ai testé aussi. Mais je savais que ça allait marcher, c'est dans le manuel PHP qui a beaucoup plus souvent raison que les témoignages qu'on trouve dans les forums :-D
Mais tu as tout à fait raison pour les points qui manquaient pour concaténer $texte .=
if (eval ($texte)) marche très bien. Je l'ai testé aussi. Mais je savais que ça allait marcher, c'est dans le manuel PHP qui a beaucoup plus souvent raison que les témoignages qu'on trouve dans les forums :-D
Mais tu as tout à fait raison pour les points qui manquaient pour concaténer $texte .=
empty
Messages postés
837
Date d'inscription
vendredi 25 juillet 2008
Statut
Membre
Dernière intervention
23 février 2016
176
11 mai 2009 à 11:31
11 mai 2009 à 11:31
Met tes résultat dans un tableau au lieu de faire :
if ($i == $nbligne - 1) {
$texte = "(substr($string, $i, 1) == 1)";
}else {
$texte = "(substr($string, $i, 1) == 1)&&";
}echo $texte;
}
fais
if ($i == $nbligne - 1) {
$texte []= "(substr($string, $i, 1) == 1)";
}else {
$texte []= "(substr($string, $i, 1) == 1)&&";
}echo implode("", $texte);
}
et puis
if (implode("", $texte)) { echo "UN DES CHIFFRE A 1"; } else { echo "UN DES CHIFFRE A 0"; }
J'ai mis en gras les changements ;-)
if ($i == $nbligne - 1) {
$texte = "(substr($string, $i, 1) == 1)";
}else {
$texte = "(substr($string, $i, 1) == 1)&&";
}echo $texte;
}
fais
if ($i == $nbligne - 1) {
$texte []= "(substr($string, $i, 1) == 1)";
}else {
$texte []= "(substr($string, $i, 1) == 1)&&";
}echo implode("", $texte);
}
et puis
if (implode("", $texte)) { echo "UN DES CHIFFRE A 1"; } else { echo "UN DES CHIFFRE A 0"; }
J'ai mis en gras les changements ;-)
10 mai 2009 à 18:54
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 ?