## goto

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

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