Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Diskussion über die Verwendung der Goto-Syntax in PHP

Eine kurze Diskussion über die Verwendung der Goto-Syntax in PHP

青灯夜游
青灯夜游nach vorne
2021-06-18 18:12:563958Durchsuche

In diesem Artikel erfahren Sie, wie Sie die Goto-Syntax in PHP verwenden. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Eine kurze Diskussion über die Verwendung der Goto-Syntax in PHP

Verwendung der Goto-Syntax in PHP


In C++, Java und vielen Sprachen gibt es eine magische Syntax, die Goto ist. Wie der Name schon sagt, dient es dazu, direkt irgendwohin zu gelangen. Aus Code-Sicht bedeutet dies, direkt zur angegebenen Stelle zu springen. Wir haben diese Funktion auch in PHP. Sehen wir uns zunächst an, wie sie verwendet wird:

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

a:
echo '2'; // 2

Wenn der Code zur Goto-Position ausgeführt wird, springt er zu der Codezeile, in der sich a: befindet, und setzt die Ausführung fort. Es fühlt sich sehr lustig an. Diese Funktion ist sehr nützlich für komplexe verschachtelte Ifs oder das Springen aus einigen Schleifen, insbesondere für die Behandlung bestimmter Ausnahmen oder Fehlersituationen, wie zum Beispiel:

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

Es ​​fühlt sich ziemlich gut an, nicht wahr, aber es gibt auch einige Goto-Syntaxen Einschränkungen:

  • Der Zielspeicherort kann sich nur in derselben Datei und demselben Bereich befinden, was bedeutet, dass Sie nicht aus einer Funktion oder Klassenmethode herausspringen oder in eine andere Funktion springen können
  • Kann nicht in eine Schleife oder in eine Schleife springen Die Schalterstruktur
  • Um aus der Schleife zu springen oder zu wechseln, ist die übliche Verwendung die Verwendung von „goto“ anstelle von „multi-layer break“

Zum Beispiel sind die folgenden Codes ungültig:

$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;

Sie werden alle melden Gleicher Fehler, aufgrund des Gültigkeitsbereichs. Die Beziehung kann das definierte goto-Tag nicht finden. Darüber hinaus ist zu beachten, dass die Verwendung von „goto“ zu einer Endlosschleife führen kann, wie unten gezeigt:

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

goto b;

Wenn der Code für „goto“ ausgeführt wird, springt er zur vorherigen b-Label-Zeile zurück und wird dann weiter nach unten ausgeführt, um „goto“ zu erreichen wieder zu einer Endlosschleife. Es fühlt sich ein bisschen wie while(true) an. Allerdings gibt es in dieser Goto-Schleife keine Unterbrechung, Sie können in Goto nur zu anderen Orten gehen.

Die Verwendung der Goto-Syntax ist also sehr selten, da sie den logischen Fluss Ihres Codes stört, aber Leute, die sie mögen, werden das Gefühl haben, dass sie den Code sehr flexibel machen kann. Dies erfordert ein wohlwollendes und kluges Urteilsvermögen. Derzeit wird die Verwendung dieser Syntax in der Dokumentation der meisten Sprachen, einschließlich PHP, nicht ausdrücklich empfohlen. Mein Vorschlag ist, dass Sie versuchen, die Goto-Syntax nicht zu verwenden, wenn es sich nicht um eine ganz besondere Situation handelt oder um Ihre Fähigkeiten unter Beweis zu stellen. Wenn der Projektcode kompliziert wird, kann es leicht sein, andere oder sich selbst zu verwirren.

测试代码: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

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über die Verwendung der Goto-Syntax in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen