if语句用于根据条件执行不同的代码块。
<?php
$age = 18;
if ($age >= 18) {
echo "您已成年,可以投票";
}
// 单行if语句(不推荐)
if ($age >= 18) echo "成年人";
?>
<?php
$score = 75;
if ($score >= 60) {
echo "及格";
} else {
echo "不及格";
}
// 实际应用:用户权限检查
$isAdmin = true;
if ($isAdmin) {
echo "欢迎,管理员";
} else {
echo "欢迎,普通用户";
}
?>
<?php
$score = 85;
if ($score >= 90) {
$grade = "A";
} elseif ($score >= 80) {
$grade = "B";
} elseif ($score >= 70) {
$grade = "C";
} elseif ($score >= 60) {
$grade = "D";
} else {
$grade = "F";
}
echo "成绩等级: $grade";
?>
<?php
$age = 25;
$hasLicense = true;
if ($age >= 18) {
if ($hasLicense) {
echo "可以驾驶";
} else {
echo "需要先考驾照";
}
} else {
echo "年龄不够,不能驾驶";
}
// 使用逻辑运算符简化
if ($age >= 18 && $hasLicense) {
echo "可以驾驶";
}
?>
switch语句用于基于不同值执行不同代码,比多个if-elseif更清晰。
<?php
$day = "Monday";
switch ($day) {
case "Monday":
echo "星期一";
break;
case "Tuesday":
echo "星期二";
break;
case "Wednesday":
echo "星期三";
break;
case "Thursday":
echo "星期四";
break;
case "Friday":
echo "星期五";
break;
case "Saturday":
case "Sunday":
echo "周末";
break;
default:
echo "无效的日期";
}
?>
<?php
$month = 2;
switch ($month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
$days = 31;
break;
case 4:
case 6:
case 9:
case 11:
$days = 30;
break;
case 2:
$days = 28;
break;
default:
$days = 0;
}
echo "这个月有 $days 天";
?>
<?php
// 传统switch
$status = 200;
switch ($status) {
case 200:
$message = "成功";
break;
case 404:
$message = "未找到";
break;
default:
$message = "未知";
}
// PHP 8+ match表达式(更简洁)
$message = match ($status) {
200 => "成功",
404 => "未找到",
500 => "服务器错误",
default => "未知状态"
};
?>
for循环用于已知循环次数的情况。
<?php
// 打印1到10
for ($i = 1; $i <= 10; $i++) {
echo $i . " ";
}
// 倒序循环
for ($i = 10; $i >= 1; $i--) {
echo $i . " ";
}
// 步长为2
for ($i = 0; $i <= 20; $i += 2) {
echo $i . " "; // 0 2 4 6 8 10...
}
?>
<?php
// 打印乘法表
for ($i = 1; $i <= 9; $i++) {
for ($j = 1; $j <= $i; $j++) {
echo "$j x $i = " . ($i * $j) . "\t";
}
echo "\n";
}
// 打印矩阵
for ($row = 1; $row <= 5; $row++) {
for ($col = 1; $col <= 5; $col++) {
echo "* ";
}
echo "\n";
}
?>
while循环在条件为真时重复执行代码块。
<?php
$count = 1;
while ($count <= 5) {
echo "计数: $count\n";
$count++;
}
// 读取文件示例
$file = fopen("data.txt", "r");
while (!feof($file)) {
$line = fgets($file);
echo $line;
}
fclose($file);
?>
<?php
// do-while至少执行一次
$num = 0;
do {
echo "数字: $num\n";
$num++;
} while ($num < 5);
// 实际应用:菜单系统
do {
echo "1. 选项1\n";
echo "2. 选项2\n";
echo "0. 退出\n";
$choice = readline("请选择: ");
switch ($choice) {
case "1":
echo "执行选项1\n";
break;
case "2":
echo "执行选项2\n";
break;
}
} while ($choice != "0");
?>
foreach专门用于遍历数组,是最常用的数组循环方式。
<?php
$colors = ["红色", "绿色", "蓝色", "黄色"];
foreach ($colors as $color) {
echo $color . "\n";
}
// 获取索引和值
foreach ($colors as $index => $color) {
echo "索引 $index: $color\n";
}
?>
<?php
$person = [
"name" => "张三",
"age" => 25,
"city" => "北京",
"email" => "zhang@example.com"
];
foreach ($person as $key => $value) {
echo "$key: $value\n";
}
// 实际应用:生成HTML表格
echo "<table>";
foreach ($person as $key => $value) {
echo "<tr><td>$key</td><td>$value</td></tr>";
}
echo "</table>";
?>
<?php
$users = [
["name" => "张三", "age" => 25],
["name" => "李四", "age" => 30],
["name" => "王五", "age" => 28]
];
foreach ($users as $user) {
echo "姓名: {$user['name']}, 年龄: {$user['age']}\n";
}
// 嵌套foreach
$classes = [
"一班" => ["张三", "李四"],
"二班" => ["王五", "赵六"]
];
foreach ($classes as $className => $students) {
echo "$className:\n";
foreach ($students as $student) {
echo " - $student\n";
}
}
?>
<?php
// 找到第一个偶数就停止
for ($i = 1; $i <= 10; $i++) {
if ($i % 2 == 0) {
echo "找到第一个偶数: $i";
break;
}
}
// 跳出多层循环
for ($i = 1; $i <= 3; $i++) {
for ($j = 1; $j <= 3; $j++) {
if ($i == 2 && $j == 2) {
break 2; // 跳出两层循环
}
echo "($i, $j) ";
}
}
?>
<?php
// 只打印奇数
for ($i = 1; $i <= 10; $i++) {
if ($i % 2 == 0) {
continue; // 跳过偶数
}
echo $i . " ";
}
// 跳过空值
$data = ["张三", "", "李四", null, "王五"];
foreach ($data as $item) {
if (empty($item)) {
continue;
}
echo $item . "\n";
}
?>
PHP提供了用于模板的替代语法,在HTML中更清晰。
<?php $items = ["苹果", "香蕉", "橙子"]; ?>
<ul>
<?php foreach ($items as $item): ?>
<li><?php echo $item; ?></li>
<?php endforeach; ?>
</ul>
<?php if ($isLoggedIn): ?>
<p>欢迎回来!</p>
<?php else: ?>
<p>请登录</p>
<?php endif; ?>