PHP 条件控制
条件语句允许程序根据指定的条件是真(true)还是假(false)来做出决策。这些语句是控制 PHP 脚本执行流程的基础,它让你的程序能够“见机行事”——只有在满足特定标准时,才去运行不同的代码块。
1. if 语句
if 语句是最基础的控制结构。只有当指定的条件为 true(真)时,它才会执行其内部的代码块。如果条件为 false(假),则会完全跳过该代码块。
if 语句的语法如下:
if (条件) {
// 如果条件为真 (true),将执行这里的代码
}括号内的 条件 通常使用我们在模块 2 中学过的比较运算符(如 ==, !=, <, >, <=, >=)或逻辑运算符(如 &&, ||, !),最终计算得出一个布尔值 true 或 false。
1.1 基础 if 示例
假设这样一个场景:你需要检查用户的年龄,以确定他们是否达到了访问特定内容的法定年龄。
<?php
$userAge = 20; // 假设这个值来自用户的输入或数据库
if ($userAge >= 18) {
echo "你符合条件,可以查看此内容。"; // 这行代码将会执行
}
echo "<br>";
$anotherUserAge = 16;
if ($anotherUserAge >= 18) {
echo "你符合条件,可以查看此内容。"; // 这行代码将不会执行(被跳过)
}
echo "验证完成。"; // 无论条件如何,这行代码都会执行
?>在第一个例子中,$userAge 是 20,大于或等于 18,所以条件 $userAge >= 18 为 true。屏幕上会显示“你符合条件,可以查看此内容。”。
在第二个例子中,$anotherUserAge 是 16,不大于等于 18,所以条件为 false。if 代码块内部的消息将被直接跳过。
1.2 结合逻辑运算符的 if 语句
你可以使用逻辑运算符将多个条件组合在一起,从而创建更复杂的检查逻辑。
<?php
$isLoggedIn = true;
$userRole = "admin";
// 检查用户是否已登录,并且 (AND) 角色是 'admin'(管理员)
if ($isLoggedIn && $userRole == "admin") {
echo "欢迎,管理员!你拥有完全访问权限。";
}
echo "<br>";
$isPaidMember = false;
$hasPremiumFeature = true;
// 检查用户是否是付费会员,或者 (OR) 是否拥有高级特权
if ($isPaidMember || $hasPremiumFeature) {
echo "高级内容访问权限已授予。";
}
?>在第一个 if 语句中,必须 $isLoggedIn 和 $userRole == "admin" 两者都为 true,内部的代码块才会执行。
在第二个例子中,只要 $isPaidMember 或 $hasPremiumFeature 其中任何一个为 true,代码块就会执行。
2. else 语句
else 语句提供了一个备用的代码块,专门在 if 条件计算为 false 时执行。它确保了两个代码块中必然有一个会被运行。
if...else 语句的语法如下:
if (条件) {
// 如果条件为真 (true),将执行这里的代码
} else {
// 如果条件为假 (false),将执行这里的代码
}2.1 if...else 示例
延续前面的年龄验证示例,你可以为那些未达到年龄要求的用户提供一条提示消息。
<?php
$userAge = 16;
if ($userAge >= 18) {
echo "你符合条件,可以查看此内容。";
} else {
echo "你必须年满 18 岁才能查看此内容。"; // 这行代码将会执行
}
echo "<br>";
$currentWeather = "sunny"; // 晴天
if ($currentWeather == "rainy") { // 下雨
echo "别忘了带伞!";
} else {
echo "好好享受这美丽的天气吧!"; // 这行代码将会执行
}
?>在第一个例子中,因为 $userAge 是 16,if 的条件为 false,所以转而执行 else 代码块。
在第二个例子中,$currentWeather 是 "sunny"(晴天),所以 if 条件不成立(为 false),程序执行了 else 代码块。
3. elseif 语句 (或 else if)
elseif(或者写成 else if,两者在 PHP 中基本等效)语句允许你按顺序测试多个条件。
如果第一个 if 条件为假,PHP 会接着检查后面的 elseif 条件。如果它也为假,则继续检查下一个 elseif,依此类推。如果所有的 if 和 elseif 条件全都不为真,那么最后那个可选的 else 代码块(如果有的话)就会被执行。
执行规则: elseif 语句只有在它前面的 if 或 elseif 条件都为 false 时才会被执行。一旦有任何一个条件被评估为 true,它对应的代码块就会被执行,并且剩下的所有 elseif 和 else 块都会被直接跳过。
if...elseif...else 的完整语法如下:
if (condition1) {
// 如果 condition1 为真 (true),执行这里的代码
} elseif (condition2) {
// 如果 condition1 为假,且 condition2 为真,执行这里的代码
} elseif (condition3) {
// 如果前面的条件都为假,且 condition3 为真,执行这里的代码
} else {
// 如果上述所有条件都为假 (false),执行这里的代码
}