Maison >développement back-end >tutoriel php >Une brève discussion sur l'utilisation de la syntaxe goto en PHP

Une brève discussion sur l'utilisation de la syntaxe goto en PHP

青灯夜游
青灯夜游avant
2021-06-18 18:12:564007parcourir

Cet article vous présentera comment utiliser la syntaxe goto en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Une brève discussion sur l'utilisation de la syntaxe goto en PHP

Utilisation de la syntaxe goto en PHP


En C++, Java et de nombreux langages, il existe une magie La syntaxe c'est aller. Comme son nom l’indique, son utilisation est d’aller directement quelque part. Du point de vue du code, cela signifie sauter directement à l'endroit spécifié. Nous avons également cette fonction en PHP. Voyons d'abord comment elle est utilisée :

goto a;
echo "1"; // 不会输出

a:
echo '2'; // 2

Lorsque le code s'exécute jusqu'à la position goto, il passe à la ligne de code où se trouve a : et continue l'exécution. C'est très amusant. Cette fonction est très utile pour les ifs imbriqués complexes ou pour sortir de certaines boucles, notamment pour gérer certaines exceptions ou situations d'erreur, telles que :

for ($i = 0, $j = 50; $i < 100; $i++) {
    while ($j--) {
        if ($j == 17) { // 假设$j==17是一种异常情况
            goto end; // 直接跳走了,循环结束的结果也不输出了
        }

    }
}
echo "i = $i";
end:
echo &#39;j hit 17&#39;; // 直接到这里输出或者处理异常情况了

Cela semble plutôt bien, non ? La syntaxe goto a également certaines limitations :

  • L'emplacement cible ne peut être que dans le même fichier et la même portée, ce qui signifie que vous ne pouvez pas sortir d'une fonction ou d'une méthode de classe, ni dans une autre. La fonction
  • ne peut pas sauter dans une boucle ou une structure de commutateur
  • pour sortir d'une boucle ou d'un commutateur. L'usage habituel est d'utiliser goto au lieu de. plusieurs couches. break

Par exemple, les codes suivants ne sont pas valides :

$a = 1;
goto switchgo;
switch ($a){
    case 1:
        echo &#39;bb&#39;;
    break;
    case 2:
        echo &#39;cc&#39;;
        switchgo:
            echo "bb";
    break;
}

goto whilego;
while($a < 10){
    $a++;
    whilego:
        echo $a;
}


// Fatal error: &#39;goto&#39; to undefined label &#39;ifgo&#39;

Ils signaleront tous la même erreur car la balise goto définie est introuvable en raison de la portée. De plus, il convient de noter que l'utilisation de goto peut provoquer une boucle infinie, comme indiqué ci-dessous :

b:
    echo &#39;b&#39;;

goto b;

Lorsque le code est exécuté pour goto, il revient à la ligne d'étiquette b précédente, puis continue de s'exécuter. vers le bas, atteignant à nouveau goto, est devenu une boucle sans fin. Cela ressemble un peu à while (vrai). Cependant, il n'y a pas de rupture dans cette boucle goto, vous ne pouvez aller qu'à d'autres endroits dans goto.

Par conséquent, l'utilisation de la syntaxe goto est très rare, car elle perturbera le flux logique de votre code, mais les personnes qui l'aiment sentiront qu'elle peut rendre le code très flexible. Cela nécessite un jugement de bienveillance et de sagesse. Actuellement, l'utilisation de cette syntaxe n'est pas fortement préconisée dans la documentation de la plupart des langages, dont PHP. Ma suggestion est que s'il ne s'agit pas d'une situation très particulière ou pour montrer vos compétences, essayez de ne pas utiliser la syntaxe goto. Lorsque le code du projet devient compliqué, il est facile de confondre les autres ou vous-même.

测试代码:https://github.com/zhangyue0503/dev-blog/blob/master/php/201911/goto%E8%AF%AD%E6%B3%95%E5%9C%A8PHP%E4%B8%AD%E7%9A%84%E4%BD%BF%E7%94%A8.md

参考文档:https://www.php.net/manual/zh/control-structures.goto.php

Étude recommandée : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer