PHPのif文・for文・while文とは?条件分岐と繰り返しを解説

PR PHP

PHPのif文・for文・while文とは?条件分岐と繰り返しを解説

💡 この記事でわかること

  • 制御構文とは何か(プログラムの流れを変えるしくみ)
  • if / elseif / else による条件分岐の書き方
  • for文・while文で処理を繰り返す方法と、無限ループの注意点
  • 配列を1つずつ処理する foreach文の使い方
  • break・continue と、WordPressテーマで見かける : 〜 endif; 記法

1. 制御構文とは?

制御構文とは、
👉 プログラムの実行の流れをコントロールするための書き方です。

プログラムは基本的に上から下へ順番に実行されますが、実際には「条件によって処理を変えたい」「同じ処理を何度も繰り返したい」という場面がよくあります。それを実現するのが次の2つです。

  • 条件分岐(if文):条件に当てはまるかどうかで処理を切り替える
  • 繰り返し(for文・while文・foreach文):同じ処理を何度も実行する

💡 PHPでは、これらのまとまり(ブロック)を波かっこ { } で表し、条件は丸かっこ ( ) の中に書きます。基本文法をまだ確認していない場合は、先に読んでおくとスムーズです。

👉 PHPの基本文法(<?php ?>・echo・変数)についての記事はこちら


2. if文(条件分岐)

基本の形

<?php
$age = 20;

if ($age >= 18) {
    echo "成人です";   // 条件が true のときだけ実行される
}

👉 if (条件) { 処理 } と書きます。条件は ( ) の中、実行したい処理は { } の中に書きます。

if / elseif / else

<?php
$score = 75;

if ($score >= 80) {
    echo "合格";
} elseif ($score >= 60) {
    echo "再テスト";
} else {
    echo "不合格";
}

// 実行結果: 再テスト

👉 条件は上から順に判定され、最初に当てはまった1つのブロックだけが実行されます。「そのほか」の処理は else に書きます(elseifelse は省略できます)。elseif は1語でつなげて書く点に注意してください。

条件式の書き方(比較・論理演算子)

<?php
$age = 25;
$isMember = true;

if ($age >= 20 && $isMember) {
    echo "割引対象です";
}
  • ==(等しい) / !=(等しくない) / ===(型まで含めて等しい)
  • > >= < <=(大小の比較)
  • &&(かつ) / ||(または) / !(否定)

👉 「等しい」の比較は ===== です。= 1つは代入なので、if ($x = 5) と書くと条件判定にならず、思わぬ動きになります===== の違いは、こちらの記事で解説しています。

👉 PHPのデータ型(真偽値・==と===の違い)についての記事はこちら


3. for文(回数を決めた繰り返し)

for文は、「決まった回数」処理を繰り返したいときに使います。

<?php
for ($i = 0; $i < 3; $i++) {
    echo $i;
}

// 実行結果: 0 1 2

👉 for (初期化; 条件; 更新) の3つをセミコロンで区切って書きます

  • 初期化($i = 0):ループの前に1回だけ実行
  • 条件($i < 3):true の間くり返す
  • 更新($i++):毎回の処理のあとに実行。$i++$i = $i + 1 と同じ

4. while文(条件が続く限りの繰り返し)

while文は、「条件が true である間、ずっと繰り返す」ときに使います。繰り返す回数が事前に決まっていない場合に向いています。

<?php
$count = 1;

while ($count <= 3) {
    echo $count;
    $count++;   // ← これを忘れると無限ループになる
}

// 実行結果: 1 2 3

👉 while文では、ループの中で「条件がいつか false になる処理」を必ず入れます。上の例では $count++ で数を増やしているため、4になった時点で条件が false になり、ループが終わります。

💡 条件がずっと true のままだと、処理が終わらない「無限ループ」になります。コマンドラインで実行が止まらなくなったときは、Ctrl + C で強制終了できます。


5. foreach文(配列の繰り返し)

👉 配列の要素を1つずつ処理するときは foreach を使います。PHPでは、配列のループはこの書き方が基本です。

<?php
$fruits = ["りんご", "みかん", "ぶどう"];

foreach ($fruits as $fruit) {
    echo $fruit;
}

// 実行結果: りんご みかん ぶどう

キー(添字や項目名)もいっしょに使いたいときは、as $キー => $値 と書きます。

<?php
$scores = ["国語" => 80, "数学" => 65];

foreach ($scores as $subject => $score) {
    echo "{$subject}: {$score}点 ";
}

// 実行結果: 国語: 80点 数学: 65点

💡 配列そのものの作り方や操作は、別の記事で詳しく解説する予定です。ここでは「配列を回すなら foreach」と覚えておけば十分です。


6. break と continue

break:ループを途中で抜ける

<?php
for ($i = 1; $i <= 10; $i++) {
    if ($i === 5) {
        break;   // 5になったらループを終了
    }
    echo $i;
}

// 実行結果: 1 2 3 4

continue:残りをスキップして次の回へ

<?php
for ($i = 1; $i <= 5; $i++) {
    if ($i % 2 === 0) {
        continue;   // 偶数のときは echo をスキップ
    }
    echo $i;
}

// 実行結果: 1 3 5

👉 break はループそのものを終了、continue はその回だけスキップして繰り返しは続行、という違いです。foreach・while の中でも同じように使えます。


7. 波かっこと、テンプレートでの別の書き方

PHPのブロックは { } で表します。インデント(字下げ)は必須ではありませんが、読みやすさのために揃えるのが基本です。

💡 HTMLの中にPHPの条件分岐を混ぜるときは、{ } の代わりに : 〜 endif; という書き方も使えます。WordPressのテーマファイルでよく見かける形です。

<?php if ($age >= 18): ?>
  <p>成人向けのコンテンツです</p>
<?php else: ?>
  <p>年齢確認が必要です</p>
<?php endif; ?>

👉 同じように、繰り返しにも foreach ( ... ): 〜 endforeach; / for ( ... ): 〜 endfor; / while ( ... ): 〜 endwhile; という形があります。動作は { } 版とまったく同じで、HTMLと混ざったときに読みやすくなります。


8. 制御構文 早見表

構文使う場面ポイント
if / elseif / else条件によって処理を分ける条件は ( )、ブロックは { }。上から順に1つだけ実行
for回数が決まった繰り返しfor (初期化; 条件; 更新)
while条件が続く限りの繰り返し更新処理を忘れると無限ループ
foreach配列の全要素を繰り返すas $値 / as $キー => $値
breakループを途中で終了ループそのものを抜ける
continueその回だけ処理を飛ばす次の繰り返しへ進む

9. まとめ

  • if / elseif / else:条件は ( )、ブロックは { }elseif は1語
  • for:for (初期化; 条件; 更新) の3つをセミコロンで区切る
  • while:条件が true の間くり返す。無限ループに注意
  • foreach:配列の繰り返しはこれが基本。as $キー => $値 でキーも取れる
  • break / continueでループの流れを制御できる
  • HTMLに混ぜるときは : 〜 endif; の別記法も使える(WordPressテーマで頻出)

👉 まずは「if文で条件分岐」「foreachで配列の繰り返し」の2つを、実際にコードを書いて動かしてみましょう。この2つが使えるようになると、PHPでできることが一気に広がります。

-PHP
-, , ,