<?php练功房

第 2 章 · 流程控制与数组 · 第 2.1 课

条件判断

约 12 分钟

if、elseif、else

程序经常要根据情况做不同的事。if 后面的括号里放条件,条件为真就执行花括号里的代码。多个条件从上往下依次判断,只会执行第一个成立的分支。

什么算“真”

if 会把条件转换成布尔值。false、0、0.0、""、"0"、null、空数组 [] 都算假,其他都算真。所以 if ($name) 可以用来判断字符串是否非空。

match 表达式(PHP 8)

要把一个值对应到另一个值时,match 比一长串 if 清爽得多。它会返回一个值,比较时用的是严格的 ===,多个值可以用逗号写在同一个分支,default 处理其余情况。

判断范围时,可以用 match (true):从上往下找第一个结果为 true 的条件。

switch

老代码里常见 switch。它用宽松比较 ==,而且每个分支末尾必须写 break,否则会继续执行下一个分支(这叫“穿透”)。新代码优先用 match。

选择题

下面哪个值放在 if (...) 里会被当作真?

练习 1

成绩等级

根据 $score 输出等级:

分数等级
90 及以上A
80–89B
70–79C
60–69D
60 以下E

85 分应该输出 B。检查时会换几个分数测试,包括边界值 90 和 60。

练习 2

HTTP 状态码

用 match 把 HTTP 状态码 $code 翻译成文字并输出:

  • 200 → OK
  • 301 或 302 → Redirect
  • 404 → Not Found
  • 500 → Server Error
  • 其他 → Unknown