[PHP]PHP5におけるgotoの利用について

PHPでは、PHP5.3以降でgoto文をサポートしました。

echo "prog1\n";
goto END_LABEL;
 
echo "prog2\n";
 
END_LABEL:
echo "prog3\n";



手元のPHP5.3.3環境で上記プログラムの実行すると、結果は以下のようになり、確かにprog2の処理がgotoで飛ばされています。

$ php -v
PHP 5.3.3 (cli) (built: Feb  9 2016 10:36:17)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
 
$ php test01.php
prog1
prog3




但し、PHPのgotoはC言語などと異なり、下記の制限があります。

対象となるラベルは同じファイル上の同じコンテキストになければなりません。 
関数やメソッドの外へgotoで移動することはできない。(逆も同じ)
 
ループやif, switchの中にもgotoで入れません。
ループやif,switchから抜け出すことは可能です。



よく使われるシチュエーションとしては、多段のループ、条件式から一度に抜け出したいときが多いです。

関連記事

コメントを残す

メールアドレスが公開されることはありません。