跳至内容

流程控制

这篇讲 PHP 中两种条件判断结构——if 系列和 switch——以及各自最佳适用场景。

if 语句

当指定条件为 true 时,执行代码块:

<?php
$t = date("H");

if ($t < "20") {
    echo "Have a good day!";
}
?>

if…else 语句

条件为 true 执行一块代码,否则执行另一块:

<?php
$t = date("H");

if ($t < "20") {
    echo "Have a good day!";
} else {
    echo "Have a good night!";
}
?>

if…elseif…else 语句

多条件分支判断:

<?php
$t = date("H");

if ($t < "10") {
    echo "Have a good morning!";
} elseif ($t < "20") {
    echo "Have a good day!";
} else {
    echo "Have a good night!";
}
?>

switch 语句

当你需要将一个变量与多个具体值进行匹配时,switch 比多层 if...elseif 更清晰:

switch (expression) {
    case label1:
        // expression == label1 时执行
        break;
    case label2:
        // expression == label2 时执行
        break;
    default:
        // 所有 case 都不匹配时执行
}

示例——判断喜欢的水果:

<?php
$favfruit = "orange";

switch ($favfruit) {
    case "apple":
        echo "Your favorite fruit is apple!";
        break;
    case "banana":
        echo "Your favorite fruit is banana!";
        break;
    case "orange":
        echo "Your favorite fruit is orange!";
        break;
    default:
        echo "Your favorite fruit is something else!";
}
?>

工作原理

  1. 计算表达式的值
  2. 依次与每个 case 的值比较
  3. 匹配则执行对应代码
  4. break 阻止"穿透"到下一个 case
  5. 无一匹配时执行 default
不要漏掉 break!如果没有 break,代码会继续执行下一个 case(称为"fall-through"),这通常不是你想要的行为。同时注意 switch 使用松散比较(==),需要严格比较类型时优先使用 if...elseif

if vs switch 如何选择

场景推荐
范围判断(如 $x > 10if...elseif
不等式比较(<>!=if...elseif
单个变量与多个具体值的匹配switch
需要严格类型比较if...elseif(用 ===

一句话小结

if 系列适合所有条件判断场景,尤其是范围和不等式;switch 适合单变量多值匹配,代码更整洁。记住:switch 要用 break,需要严格比较选 if。下一篇讲 循环结构

最后更新于