PHPの制御構文(if/for/foreach)を初級試験目線で解説

条件分岐・繰り返し処理といった制御構文は、PHPプログラムの流れを組み立てる基本です。 PHP8技術者認定初級試験でも頻出のテーマであり、コードの実行結果を正確に追えるかが問われます。

if / elseif / else による条件分岐

条件を上から順に評価し、最初に真になった分岐だけが実行されます。 elseifの条件は前の条件が偽の場合のみ評価される点に注意しましょう。

$score = 75;

if ($score >= 90) {
    echo 'A評価';
} elseif ($score >= 70) {
    echo 'B評価';
} else {
    echo 'C評価';
}

match式(PHP8の新機能)とswitchの違い

PHP8で追加されたmatch式は、switchと似ていますが 厳密比較(===)で判定され、breakが不要で、式として値を返せる点が異なります。

$grade = 'B';

// switchと違い、match式は「厳密比較(===)」で判定し、breakが不要
$message = match ($grade) {
    'A' => '優秀です',
    'B', 'C' => '合格ラインです',
    default => '要復習です',
};

for・while・do-whileによる繰り返し

回数が決まっている繰り返しにはfor、 条件を満たす間繰り返すにはwhileを使います。 do-whileは条件判定より先に、本文が必ず1回は実行される点が試験の頻出ポイントです。

for ($i = 1; $i <= 3; $i++) {
    echo "{$i}回目\n";
}
$i = 0;
while ($i < 3) {
    echo $i;
    $i++;
}

// do-whileは条件判定より先に必ず1回実行される
$j = 10;
do {
    echo $j;
} while ($j < 5);

foreachと参照渡しの注意点

foreach ($array as &$value)のように参照渡しでループすると、 元の配列の要素を直接書き換えられます。ただし、ループ後にunset()で 参照を解除しないと、意図しない値の上書きにつながることがあり、試験でも狙われやすいポイントです。

$numbers = [1, 2, 3];

foreach ($numbers as &$n) {
    $n *= 10;
}
unset($n); // 参照を明示的に解除しないと予期しない不具合の原因になる

// $numbers は [10, 20, 30]

break と continue の使い分け

continueはそのループの残り処理をスキップして次の周回へ進み、 breakはループそのものを終了します。実行結果を問う設問で頻出です。

for ($i = 1; $i <= 5; $i++) {
    if ($i === 3) {
        continue; // 3のときだけスキップして次のループへ
    }
    if ($i === 5) {
        break; // 5になったらループを抜ける
    }
    echo $i;
}
// 出力: 1 2 4

制御構文に関する模擬問題を解いてみよう

制御構文の理解度を模擬試験で確認しよう

無料・登録不要ですぐに挑戦できます。