ループ処理の中で、特定の条件のときだけ処理をスキップして次の繰り返しに進みたい場合があります。PHPのcontinue文を使うと、ループの残りの処理をスキップして、次のイテレーション(繰り返し)に直接ジャンプできます。
この記事では、continue文の基本的な使い方から、breakとの違い、実践的な使用パターンまで詳しく解説します。
基本的な使い方
PHP
<?php
// 奇数だけを表示する(偶数をスキップ)
for ($i = 1; $i <= 10; $i++) {
if ($i % 2 === 0) {
continue;
}
echo $i . "\n";
}
?>
実行結果
1
3
5
7
9
$iが偶数の場合、continue文が実行されてechoがスキップされます。ループ自体は終了せず、次の繰り返しに進みます。
breakとの違い
PHP
<?php
echo "--- continueの場合 ---\n";
for ($i = 0; $i < 5; $i++) {
if ($i === 2) {
continue;
}
echo "$i ";
}
echo "\n";
echo "\n--- breakの場合 ---\n";
for ($i = 0; $i < 5; $i++) {
if ($i === 2) {
break;
}
echo "$i ";
}
echo "\n";
?>
実行結果
--- continueの場合 ---
0 1 3 4
--- breakの場合 ---
0 1
continueは「今回だけスキップして次へ進む」のに対し、breakは「ループ自体を終了する」という違いがあります。
実践的な使用例
PHP
<?php
// 商品リストから有効な商品だけを処理する
$products = [
["name" => "りんご", "price" => 150, "active" => true],
["name" => "バナナ", "price" => 100, "active" => false],
["name" => "みかん", "price" => 80, "active" => true],
["name" => "ぶどう", "price" => 300, "active" => true],
["name" => "メロン", "price" => 0, "active" => true],
];
$total = 0;
foreach ($products as $product) {
if (!$product["active"]) {
continue;
}
if ($product["price"] <= 0) {
echo $product["name"] . " は価格未設定のためスキップ\n";
continue;
}
echo $product["name"] . ": " . $product["price"] . "円\n";
$total += $product["price"];
}
echo "合計: {$total}円\n";
?>
実行結果
りんご: 150円
みかん: 80円
ぶどう: 300円
メロン は価格未設定のためスキップ
合計: 530円
ネストしたループでのcontinue
breakと同様に、continue 2 のように数値を指定して外側のループの次のイテレーションに進むことができます。ただし、可読性が下がるため使用は控えめにしましょう。
while文でのcontinueに注意
while文でcontinueを使う場合、カウンタの更新処理がcontinueの後に書かれていると、カウンタが更新されず無限ループになる可能性があります。カウンタの更新はcontinueの前に記述しましょう。
まとめ
- continue文はループの残りの処理をスキップして次の繰り返しに進む
- breakはループを終了するが、continueは次のイテレーションに進むだけ
- 特定の条件のデータをスキップする処理パターンでよく使われる
- continue 2 で外側のループの次のイテレーションに進められる
- while文では、カウンタ更新がスキップされないよう配置に注意する