Blah: et break blah;

pontarose Messages postés 151 Statut Membre -  
pontarose Messages postés 151 Statut Membre -
Bonjour,

Il me semble que les ":" de blah (blah:)

En effet, quand je lance le script ci-dessus, j'obtient le message suivant
Parse error: syntax error, unexpected ':' in /home/xxx/xxx/test.php on line 7

Quelle est la bonne syntaxe? j'utilise php 5

<?php

for ($i = 0; $i < 9; $i++)
{
if (true) {
break blah;
}
echo "not shown";
blah:
echo "iteration $i\n";
}
?>

3 réponses

macgawel Messages postés 676 Statut Membre 89
 
Bonjour.

En php, on n'utilise pas d'étiquette.
Le break sort de la boucle - éventuellement de plusieurs boucles, et c'est tout.
0
pontarose Messages postés 151 Statut Membre 2
 
Merci de ta réponse,

Je ne comprend pas pourquoi cet exemple est donné: http://www.developertutorials.com/blog/php/goto-is-coming-to-php-14/

Peut-on faire un GOTO en php alors?
0
pontarose Messages postés 151 Statut Membre 2
 
Merci de ta réponse, j'ai depuis lu pas mal de chose et non apparement il n'existe pas d'équivalent de "GOTO LABEL" en php

Voiçi ce que j'aurais aimé faire:

Si condition 1 OK -> Aller au for
Si condition 1 NON OK -> ELSE

blah:
for($i=0;$i<strlen();$i++)
{
if (condition 1 réalisée}
{
Liste d'instructions
break blah;
}
else
{
autre instruction
}

On dit que si
"Si tu as besoin d'un goto c'et que tu as un soucis dans ton algorithme"

comment m'être mes instructions dans une fonction?

}
0
macgawel Messages postés 676 Statut Membre 89
 
Est-ce que tu as un algorithme, parce que là je ne comprends pas tout ?

L'instruction IF...ELSE est exclusive. C'est à dire que :
SI Condition ALORS instructions1
SINON instructions2

Du coup, si ce que tu veux, c'est dans ta boucle FOR, éxécuter une action SI la condition1 n'est pas réalisée, il suffit de la tester :
FOR (...) {
// SI (NON condition1)
   IF (! condition1) {
      instructions
   }
}


Et si tu veux sortir de ta boucle SI tu as condition1, un BREAK te permet d'en sortir, et de passer à la suite.
0
pontarose Messages postés 151 Statut Membre 2
 
Bonjour,

for ($s=0;$s<count($new);$s++)
{
blah:
for ($i=0;$i<strlen($new[$s][1])-7;$i++)
{
$windows_end="".substr($new[$s][1],$i,1)."".substr($new[$s][1],$i+1,1)."".substr($new[$s][1],$i+2,1)."".substr($primers_new[$s][1],$i+3,1)."";

if($windows_end==$end3)
{
//si je suis dans ce cas,je veux revenir au niveau de la 2ième boucle for avec ($new[$s][1]=x et $end3=y)
$new[$s][1]=x;
$end3=y;

break blah;
}
else
{
//print("$windows_end_forward ($i) diff $end3_forward_last_subunit<br>");
}
}
}

Je veux en fait, sortir de ma boucle (n°2)et refaire ma boucle avec de nouvelle valeur de$new[$s][1] et de $end3
0