goto

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Quelle est la chose la plus bizarre lors de l'utilisation de goto ?

Image fournie par » xkcd

L'opérateur goto peut être utilisé pour continuer l'exécution du script à un autre point du programme. La cible est spécifiée par une étiquette sensible à la casse, suivi de deux-point, et l'instruction goto est ensuite suivie de ce label. goto n'est pas totalement sans limitations. L'étiquette cible doit être dans le même contexte et fichier, ce qui signifie qu'il n'est pas possible de changer de méthode ou de fonction, ni de se rendre dans une autre fonction. Il est de même impossible d'entrer dans une structure de boucle ou un switch. Il est néanmoins possible d'en sortir, et l'utilisation courante est alors de se servir de goto comme un break.

Exemple #1 Exemple avec goto

<?php

goto a;
echo
'Foo';

a:
echo
'Bar';

?>

L'exemple ci-dessus va afficher :

 Bar 

Exemple #2 Exemple de boucle avec goto

<?php
for ($i = 0, $j = 50; $i < 100; $i++) {
while (
$j--) {
if (
$j == 17) {
goto
end;
}
}
}
echo
"i = $i";
end:
echo
'j hit 17';

?>

L'exemple ci-dessus va afficher :

 j hit 17 

Exemple #3 Ce goto ne fonctionne pas

<?php
goto loop;
for (
$i = 0, $j = 50; $i < 100; $i++) {
while (
$j--) {
loop:
}
}
echo
"$i = $i";

?>

L'exemple ci-dessus va afficher :

 Fatal error: 'goto' into loop or switch statement is disallowed in script on line 2 
To Top