気軽に読めるPHP入門書・PHPスクリプトが動かないときの原因と対策などを紹介します。

  1. PHPエラーの原因と対策
  2. 27 view

二重ループを一気に抜けるにはラベル付きbreakの代わりに「break 2」またはgoto演算子を使う

ループの中でbreak文を使うと、そのループを抜けることができますが、二重ループの内側でbreakを使うと、内側のループを抜けるだけです。

<?php
for ($i = 1; $i < 5; $i++) {
    for ($j = 1; $j < 5; $j++) {
        echo "{$i}{$j} ";
        if ($j >= 2) {
            break;
        }
    }
}
?>
break文の使用例

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;
        }
    }
}
?>
break文で二重ループを抜ける

break文で二重ループを抜ける

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 "終了";
?>
goto演算子による二重ループからの脱出

goto演算子による二重ループからの脱出

PHPエラーの原因と対策の最近記事

  1. PHPの関数や変数の前にあるアットマークの意味は?

  2. 「http:// wrapper is disabled in the server co…

  3. php.iniの場所

  4. 「Warning: array_key_exists()」と表示されるとき

  5. 「Warning: A non-numeric value encountered」と表示…

関連記事

PAGE TOP