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

青灯夜游
Libérer: 2023-04-10 08:38:02
avant
3971 Les gens l'ont consulté

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
Copier après la connexion

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;; // 直接到这里输出或者处理异常情况了
Copier après la connexion

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;
Copier après la connexion

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;
Copier après la connexion

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
Copier après la connexion

É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!

Étiquettes associées:
php
source:juejin.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal