ループの中でbreak文を使うと、そのループを抜けることができますが、二重ループの内側でbreakを使うと、内側のループを抜けるだけです。
<?php for ($i = 1; $i < 5; $i++) { for ($j = 1; $j < 5; $j++) { echo "{$i}{$j} "; if ($j >= 2) { break; } } } ?>
Javaなどのように「break ラベル;」と、移動先のラベルを指定できないので、PHPで二重ループを一気に抜けたい場合、抜けるループの数を示すパラメータを指定する方法があります。たとえば、二重ループを抜けたい場合、「break 2」のように記述します。
<?php for ($i = 1; $i < 5; $i++) { for ($j = 1; $j < 5; $j++) { echo "{$i}{$j} "; if ($j >= 2) { break 2; } } } ?>
PHP5.4.0からは、「break $num;」のように抜ける数に変数を指定できなくなりました。古いバージョンで動的に抜ける数を設定している場合は注意してください。
PHP 5.3.0からはgoto演算子を使うことができます。goto演算子では、次のように指定したラベルに移動することで二重ループを抜けることができます。逆にループの中にgoto演算子で移動することはできません。
<?php for ($i = 1; $i < 5; $i++) { for ($j = 1; $j < 5; $j++) { echo "{$i}{$j} "; if ($j >= 2) { goto label1; } } } label1: echo "終了"; ?>