PHPでのループ制御をマスター!「continue」の完全ガイド10選

PHPのcontinueステートメントを解説する記事のサムネイル画像PHP
この記事は約9分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればサンプルコードを活用して機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

あなたがPHPでプログラミングを始めたばかりの初心者であっても、或いはすでに経験豊富な開発者であっても、「continue」ステートメントの使い方を知ることはとても価値があります。

このステートメントは、あなたのコーディングスキルを更に向上させ、プログラムのパフォーマンスを向上させる可能性を秘めています。

本記事を読むことで、PHPの「continue」ステートメントについて理解を深め、その使い方をマスターすることができるようになります。

●PHPの「continue」ステートメントとは

「continue」ステートメントは、ループ処理における特殊なコマンドの一つで、プログラムの特定の部分をスキップしたい場合に使用されます。

これは例えば、ある条件が満たされた場合にループの残りの部分を無視し、次のイテレーション(繰り返し)に直接進む場合などに便利です。

○「continue」の基本的な使い方

「continue」ステートメントはループ内で使用され、その構文は非常にシンプルです。

foreach ($array as $value) {
    if (条件) {
        continue;
    }
    // 何かの処理
}

上記のコードでは、if文の条件が真(true)の場合、その後の処理をスキップして次のループへと進みます。

●「continue」の具体的な使い方

次に、「continue」ステートメントを具体的にどのように使うのかを、サンプルコードを用いて解説します。

下記の各サンプルコードは、実際にコーディングする際の一例としてご利用いただけます。

○サンプルコード1:基本的なループ処理での「continue」の使い方

ここでは、基本的なループ処理の中で「continue」ステートメントをどのように使用するのかを見ていきましょう。

for ($i = 0; $i < 10; $i++) {
    if ($i % 2 == 0) {
        continue;
    }
    echo $i;
}

このコードでは、0から9までの数字を順に出力しますが、数字が偶数の場合は出力をスキップします。

つまり、出力結果は奇数のみとなります。

○サンプルコード2:複数の条件で「continue」を使う方法

複数の条件を持つ場合でも「continue」ステートメントは有効です。

次のコードは、3の倍数と5の倍数をスキップする例です。

for ($i = 1; $i <= 20; $i++) {
    if ($i % 3 == 0 || $i % 5 == 0) {
        continue;
    }
    echo $i . "\n";
}

このコードを実行すると、1から20までの間で3の倍数と5の倍数を除いた数字が出力されます。

○サンプルコード3:ネストされたループにおける「continue」の役割

ネストされたループ、つまりループの中にループがある場合でも「continue」ステートメントは有効に働きます。

しかし、その挙動には注意が必要です。

for ($i = 0; $i < 3; $i++) {
    for ($j = 0; $j < 3; $j++) {
        if ($j == 1) {
            continue;
        }
        echo "$i, $j\n";
    }
}

このコードを実行すると、「$j」が1の場合、そのループの残りの部分がスキップされます。

そのため、「$i」の値に関わらず、「$j」が1のときの出力はスキップされ、結果として「$j」の値が0と2のときのみ出力されます。

●「continue」の応用例

「continue」ステートメントは、単にループを途中でスキップするだけでなく、多様な状況で有効に活用することができます。

ここからは、「continue」を応用した具体的なコード例をいくつか見てみましょう。

○サンプルコード4:エラーチェックに利用する方法

「continue」ステートメントは、エラーチェックの一部として使用することができます。

例えば、配列内の全ての要素が有効な値であることを確認する際に、無効な値を発見した時点でその要素の処理をスキップする、といった用途です。

$numbers = [1, 0, 3, 4, 0, 6];

foreach ($numbers as $number) {
    if ($number == 0) {
        continue;
    }
    echo 10 / $number . "\n";
}

このコードでは、$numbersという配列に対してループを実行し、各要素を10で割った結果を出力します。

ただし、要素が0の場合には除算エラーを避けるために、その要素の処理をスキップします。

○サンプルコード5:特定の値をスキップする方法

次に、特定の値をスキップするために「continue」ステートメントを使用する方法を見てみましょう。

$words = ["apple", "banana", "cherry", "date", "elderberry"];

foreach ($words as $word) {
    if ($word == "date") {
        continue;
    }
    echo $word . "\n";
}

このコードでは、$wordsという配列の各要素を出力します。

ただし、要素が”date”の場合、その要素の処理をスキップします。

○サンプルコード6:特定のパターンをスキップする方法

また、特定のパターンを持つ要素の処理をスキップするためにも「continue」ステートメントは有効です。

for ($i = 1; $i <= 30; $i++) {
    if ($i % 2 == 0 && $i % 3 == 0) {
        continue;
    }
    echo $i . "\n";
}

このコードでは、1から30までの数字を出力しますが、2と3の両方で割り切れる数字はスキップします。

つまり、「continue」ステートメントを用いて特定のパターンを持つ要素を簡単にスキップすることが可能です。

これらの例からもわかるように、「continue」ステートメントは非常に多様な場面で有効に活用できます。

次に、この「continue」ステートメントを利用する際の注意点と対処法について見てみましょう。

●「continue」の注意点と対処法

「continue」ステートメントはその機能性から多様なシーンで利用できますが、その一方で注意すべきポイントも存在します。

適切に使いこなすためには、これらの注意点と対処法を理解しておくことが重要です。

1.ループ外での使用

「continue」ステートメントはループの中でのみ使用できます。

ループ外で使用しようとするとエラーとなります。

これを避けるためには、必ずループ内での使用を心がけましょう。

if (true) {
    continue;  // エラー
}

2.ネストされたループ

「continue」ステートメントはネストされたループでは内側のループだけをスキップします。

外側のループをスキップしたい場合は、continue 2というように数字を指定することで制御できます。

for ($i = 0; $i < 3; $i++) {
    for ($j = 0; $j < 3; $j++) {
        if ($j == 1) {
            continue 2;
        }
        echo $i . "-" . $j . "\n";
    }
}

このコードでは、内側のループで$jが1のとき、外側のループまでスキップしています。

そのため、出力結果は「0-0」「1-0」「2-0」となります。

3.switch文の中での使用

「continue」はswitch文の中でも使用できますが、その場合は「break」同様の動作をすることに注意が必要です。

つまり、switch文を抜け出す動作をします。

switch ($i) {
    case 0:
        if ($j == 1) {
            continue;  // 実際には「break」のように働く
        }
        // some code
        break;
}

●「continue」のカスタマイズ方法

「continue」はその基本的な動作だけでなく、さまざまなカスタマイズが可能です。

この節では、ネストしたループでの「continue」の使い方を詳しく解説します。

PHPでは、「continue」ステートメントに数字を指定することで、その数だけ外側のループまでスキップすることができます。

この機能を使うことで、複数階層のループの制御をより細かく行うことが可能となります。

下記のコードは、「continue」に2を指定した例です。

このコードでは二重ループを使って0から2までの値を繰り返していますが、内側のループで$jが1の場合には、「continue 2;」が実行され、外側のループもスキップします。

for ($i = 0; $i < 3; $i++) {
    for ($j = 0; $j < 3; $j++) {
        if ($j == 1) {
            continue 2;
        }
        echo $i . "-" . $j . "\n";
    }
}

上記のコードを実行すると、出力は以下のようになります。

0-0
1-0
2-0

この例では、$jが1のときに二重ループから抜け出しています。

その結果、$jが1または2のときの出力がスキップされ、次の$iのループに移行しています。

このように、「continue」ステートメントは柔軟な制御を可能にし、より高度なプログラミングを支えます。

これらの機能を活かし、あなたのコーディングスキルをさらに磨きましょう。

次に、本記事のまとめに進みます。

まとめ

今回の記事では、PHPのループ制御ステートメント「continue」について学びました。

基本的な動作から、より詳細なカスタマイズ方法までを解説し、サンプルコードを通じてその機能を具体的に見てきました。

「continue」はループの途中でスキップし、次のループに進むための強力なツールです。

誤って無限ループを作成する可能性を減らし、プログラムの流れをより細かく制御できます。

さらに、ネストされたループでの「continue」の使用方法を学ぶことで、コードの柔軟性と効率性を向上させることが可能です。

PHPの「continue」ステートメントを使いこなすことで、あなたのコーディングスキルはさらに進化します。

是非とも日々のプログラミング作業にこのステートメントを活用してみてください。

この記事が、PHPでの「continue」ステートメントの理解と利用に役立つことを願っています。

これからも、より効率的で美しいコードを書くための知識と技術を深めていきましょう。