条件语句 #
一、if 语句 #
1.1 基本语法 #
php
<?php
$age = 20;
if ($age >= 18) {
echo "成年人";
}
1.2 单行语句 #
php
<?php
if ($age >= 18)
echo "成年人";
if ($age >= 18) echo "成年人";
1.3 代码块 #
php
<?php
if ($age >= 18) {
echo "成年人\n";
echo "可以投票\n";
}
二、if-else 语句 #
2.1 基本语法 #
php
<?php
$age = 15;
if ($age >= 18) {
echo "成年人";
} else {
echo "未成年人";
}
2.2 嵌套使用 #
php
<?php
$age = 25;
$hasLicense = true;
if ($age >= 18) {
if ($hasLicense) {
echo "可以驾驶";
} else {
echo "需要考取驾照";
}
} else {
echo "年龄不足";
}
三、elseif 语句 #
3.1 基本语法 #
php
<?php
$score = 85;
if ($score >= 90) {
echo "优秀";
} elseif ($score >= 80) {
echo "良好";
} elseif ($score >= 70) {
echo "中等";
} elseif ($score >= 60) {
echo "及格";
} else {
echo "不及格";
}
3.2 多条件判断 #
php
<?php
$age = 25;
$isStudent = false;
if ($age < 13) {
echo "儿童";
} elseif ($age >= 13 && $age < 18) {
echo "青少年";
} elseif ($age >= 18 && $isStudent) {
echo "成年学生";
} elseif ($age >= 18 && !$isStudent) {
echo "成年工作者";
} else {
echo "其他";
}
四、替代语法 #
4.1 冒号语法 #
php
<?php
$age = 20;
if ($age >= 18):
echo "成年人";
elseif ($age >= 13):
echo "青少年";
else:
echo "儿童";
endif;
4.2 在HTML中使用 #
php
<?php $isLoggedIn = true; ?>
<?php if ($isLoggedIn): ?>
<div class="welcome">
<p>欢迎回来!</p>
<a href="/logout">退出</a>
</div>
<?php else: ?>
<div class="login">
<a href="/login">登录</a>
<a href="/register">注册</a>
</div>
<?php endif; ?>
五、条件表达式 #
5.1 比较运算 #
php
<?php
$a = 10;
$b = 20;
if ($a == $b) {
echo "相等";
}
if ($a === $b) {
echo "全等";
}
if ($a != $b) {
echo "不等";
}
if ($a < $b) {
echo "a小于b";
}
if ($a >= 10) {
echo "a大于等于10";
}
5.2 逻辑运算 #
php
<?php
$age = 25;
$hasLicense = true;
$hasInsurance = true;
if ($age >= 18 && $hasLicense && $hasInsurance) {
echo "可以驾驶";
}
if ($age < 18 || !$hasLicense) {
echo "不能驾驶";
}
if (!$hasInsurance) {
echo "需要购买保险";
}
5.3 类型检查 #
php
<?php
$value = "hello";
if (is_string($value)) {
echo "是字符串";
}
if (is_int($value)) {
echo "是整数";
}
if (is_array($value)) {
echo "是数组";
}
if ($value === null) {
echo "是null";
}
六、三元运算符 #
6.1 基本语法 #
php
<?php
$age = 20;
$status = $age >= 18 ? "成年" : "未成年";
echo $status;
6.2 嵌套三元 #
php
<?php
$score = 85;
$grade = $score >= 90 ? "A" :
($score >= 80 ? "B" :
($score >= 70 ? "C" :
($score >= 60 ? "D" : "F")));
echo $grade;
6.3 简写形式 #
php
<?php
$name = "";
$displayName = $name ?: "Guest";
echo $displayName;
$name = "John";
$displayName = $name ?: "Guest";
echo $displayName;
6.4 Null合并 #
php
<?php
$name = $_GET['name'] ?? "Guest";
$page = $_GET['page'] ?? 1;
七、match 表达式(PHP 8.0+) #
7.1 基本语法 #
php
<?php
$status = 200;
$message = match($status) {
200 => "OK",
400 => "Bad Request",
404 => "Not Found",
500 => "Internal Server Error",
default => "Unknown Status"
};
echo $message;
7.2 多条件匹配 #
php
<?php
$grade = 'B';
$result = match($grade) {
'A', 'B' => "优秀",
'C', 'D' => "及格",
'F' => "不及格",
default => "无效成绩"
};
echo $result;
7.3 表达式匹配 #
php
<?php
$value = 15;
$result = match(true) {
$value < 10 => "小于10",
$value < 20 => "小于20",
$value < 30 => "小于30",
default => "大于等于30"
};
echo $result;
7.4 match vs switch #
php
<?php
$value = 1;
$result = match($value) {
1 => "一",
2 => "二",
default => "其他"
};
switch ($value) {
case 1:
$result = "一";
break;
case 2:
$result = "二";
break;
default:
$result = "其他";
}
八、实际应用 #
8.1 表单验证 #
php
<?php
function validateUser(array $data): array
{
$errors = [];
if (empty($data['name'])) {
$errors[] = "姓名不能为空";
} elseif (strlen($data['name']) < 2) {
$errors[] = "姓名至少2个字符";
}
if (empty($data['email'])) {
$errors[] = "邮箱不能为空";
} elseif (!filter_var($data['email'], FILTER_VALIDATE_EMAIL)) {
$errors[] = "邮箱格式不正确";
}
if (empty($data['password'])) {
$errors[] = "密码不能为空";
} elseif (strlen($data['password']) < 8) {
$errors[] = "密码至少8位";
}
return $errors;
}
8.2 权限检查 #
php
<?php
function canAccess(User $user, string $resource): bool
{
if ($user->isAdmin()) {
return true;
}
if ($user->isBanned()) {
return false;
}
if ($user->hasPermission($resource)) {
return true;
}
return false;
}
8.3 价格计算 #
php
<?php
function calculatePrice(float $basePrice, string $membership): float
{
$discount = match($membership) {
'vip' => 0.8,
'gold' => 0.7,
'platinum' => 0.6,
default => 1.0
};
return $basePrice * $discount;
}
九、最佳实践 #
9.1 使用严格比较 #
php
<?php
if ($value === null) {
}
if ($value !== '') {
}
9.2 提前返回 #
php
<?php
function process(?User $user): string
{
if ($user === null) {
return "用户不存在";
}
if (!$user->isActive()) {
return "用户未激活";
}
return "处理成功";
}
9.3 避免深层嵌套 #
php
<?php
function checkAccess(User $user): bool
{
if (!$user->isActive()) {
return false;
}
if (!$user->hasPermission('read')) {
return false;
}
if ($user->isBanned()) {
return false;
}
return true;
}
9.4 使用 match 替代复杂 switch #
php
<?php
$status = match($code) {
200, 201, 204 => 'success',
400, 401, 403 => 'client_error',
500, 502, 503 => 'server_error',
default => 'unknown'
};
十、总结 #
本章学习了:
- if 语句
- if-else 语句
- elseif 语句
- 替代语法
- 三元运算符
- match 表达式(PHP 8.0+)
- 最佳实践
下一章将学习 switch 语句。
最后更新:2026-03-26