Kodokon kodokon.com

条件とループ

ifとmatchでスクリプトに反応させ、for、foreach、whileで動作を繰り返しましょう。

9 分 · 3 問

このレッスンを Kodokon で開く

条件は、スクリプトに進む道を選ばせます。「これが真ならあれをして、そうでなければ別のことをする」というふうにです。ifキーワードは、truefalseに評価される式を、比較演算子を使ってテストします。>(より大きい)、<(より小さい)、>=<====(等しい、同じ値かつ同じ型)、!==(異なる)です。elseifは前のテストが失敗したときに別のテストを加え、elseはどのテストも成功しなかったときに実行されます。テストは上から下へ読まれ、最初に真になったものが勝ちます。

PHP
<?php

$temperature = 12;

if ($temperature > 25) {
    echo "It's hot.";
} elseif ($temperature > 15) {
    echo "It's mild.";
} else {
    echo "Grab a jacket!";
}
ここでは、elseブロックだけが実行される。

同じ変数をいくつかの特定の値と比べるときは、match式のほうがエレガントです。変数をそれぞれのケースと比較し(値と型による厳密な比較)、直接値を返します。その値は変数に保存できます。defaultケースは、どの値も一致しないときの安全網の役割を果たします。

PHP
<?php

$day = "saturday";

$message = match ($day) {
    "saturday", "sunday" => "It's the weekend!",
    "monday" => "Hang in there, back to work.",
    default => "Have a good weekday.",
};

echo $message;
matchは値を返し、ここでは$messageに保存される。

ループは、コードをコピー&ペーストせずに、命令のブロックを何度も繰り返します。forループは、繰り返す回数が事前にわかっているときに理想的です。セミコロンで区切られた三つの部分に分けて読みます。開始($i = 1)、継続の条件($i <= 5、これが真である限り続きます)、そしてステップ($i++、各回で$iに1を足します)です。

PHP
<?php

for ($i = 1; $i <= 5; $i++) {
    echo "Round number {$i}<br>";
}
1から5まで含めて、五回。

あと二つのループが道具箱を完成させます。foreach配列(値のリスト。次のレッスンで扱います)をたどり、各要素を一つずつ手渡します。whileは条件が真であり続ける限りブロックを繰り返します。最終的に止まるように、ループの中で状況を変えるのはあなた次第です。

PHP
<?php

$fruits = ["apple", "pear", "kiwi"];

foreach ($fruits as $fruit) {
    echo "Fruit: {$fruit}<br>";
}

$countdown = 3;

while ($countdown > 0) {
    echo "{$countdown}...<br>";
    $countdown--;
}

echo "Go!";
foreachはリストをたどり、whileはカウントダウンする。

理解度チェック

このレッスンの要点をしっかり覚えているか確認しましょう。

  1. elseブロックはいつ実行されますか?
    • 常に、ifブロックのすぐあとに
    • 前のどの条件も真でないときだけ
    • if条件が真のときだけ
  2. matchifと区別するものの一つは何ですか?
    • 直接値を返す
    • 数値しか比較できない
    • すべてのケースを次々に実行する
  3. whileの条件が永遠に真のままだとどうなりますか?
    • ループは100回のあとに自動的に止まる
    • PHPはループを無視して先へ進む
    • ループが際限なく実行され、スクリプトがフリーズする