PHP での goto 構文の使用法に関する簡単な説明

青灯夜游
リリース: 2023-04-10 08:38:02
転載
3974 人が閲覧しました

この記事では、PHP で goto 構文を使用する方法を紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

PHP での goto 構文の使用法に関する簡単な説明

PHP での goto 構文の使用


C、Java、および多くの言語には、魔法の構文があります。後藤です。名前が示すように、その用途は直接どこかに行くことです。コードの観点から見ると、これは指定された場所に直接ジャンプすることを意味します。 PHP にもこの関数があります。まず、その使用方法を見てみましょう:

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

a:
echo '2'; // 2
ログイン後にコピー

コードが goto 位置まで実行されると、a: があるコード行にジャンプします。そして実行を継続します。この関数は、複雑にネストされた if や一部のループから抜け出す場合、特に次のような特定の例外やエラー状況を処理する場合に非常に便利です。 goto 構文にもいくつかの制限があります。

    ターゲットの場所は、同じファイルおよびスコープ内にのみ配置できます。つまり、ある関数またはクラス メソッドから抜け出したり、別の関数やクラス メソッドにジャンプしたりすることはできません。関数
  • はループまたはスイッチ構造にジャンプできません
  • ループまたはスイッチから抜け出すには、通常の使用法は次のとおりです。複数のレイヤー Break の代わりに goto
  • #たとえば、次のコードは無効です:
  • 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;; // 直接到这里输出或者处理异常情况了
    ログイン後にコピー
定義された goto タグが見つからないため、これらはすべて同じエラーを報告します。スコープに。さらに、goto を使用すると、以下に示すように無限ループが発生する可能性があることに注意してください。

$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;
ログイン後にコピー

コードが goto まで実行されると、前の b ラベル行に戻り、実行が継続されます。下方向に進み、またgotoに到達する、という無限ループになりました。 while (true) のような気がします。ただし、この goto ループには中断がなく、goto で他の場所に移動することしかできません。

つまり、goto 構文を使用することは非常にまれです。コードの論理的な流れが中断されるためです。しかし、それを好む人は、goto 構文を使用するとコードが非常に柔軟になると感じるでしょう。これには慈悲と知恵の判断が必要ですが、現在、この構文の使用は、PHP を含むほとんどの言語のドキュメントで強く推奨されていません。プロジェクトのコードが複雑になると、他の人や自分自身を混乱させやすくなりますので、特別な状況でない場合や自分のスキルを誇示するための場合は、goto 構文を使用しないことをお勧めします。

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

goto b;
ログイン後にコピー
推奨学習: 「

PHP ビデオ チュートリアル

以上がPHP での goto 構文の使用法に関する簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:juejin.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート