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. 以下哪一点是 match 区别于 if 的地方?
    • 它直接返回一个值
    • 它只能比较数字
    • 它会逐一运行每个分支
  3. 如果一个 while 条件永远保持为真,会发生什么?
    • 循环在 100 轮后自动停止
    • PHP 忽略这个循环并继续往下执行
    • 循环无休止地运行,把脚本卡死