【PHP 流程控制完全指南】

PHP 流程控制完全指南


🧠 一、什么是流程控制?

在编程中,流程控制是指控制程序执行顺序的语句。它决定了代码是"从上往下执行",还是"根据条件跳转",或者"循环执行某些代码"。

PHP 中的流程控制语句主要包括:

  • 循环结构 :while、do-while、for、foreach
  • 条件结构 :if、else、elseif、switch、match
  • 跳转结构 :break、continue、goto

🔁 二、循环结构

1. while 循环

最简单的循环结构 ,只要条件为 true,就一直执行。

✅ 示例:
php 复制代码
$i = 0;
while ($i < 5) {
    echo $i;
    $i++;
}
// 输出:01234
📌 特点:
  • 先判断条件,再执行代码块。
  • 如果条件一开始就是 false,则代码块不会执行。

2. do-while 循环

先执行一次,再判断是否继续执行。

✅ 示例:
php 复制代码
$i = 0;
do {
    echo $i;
    $i++;
} while ($i < 5);
// 输出:01234
📌 特点:
  • 至少执行一次代码块。
  • 适合"至少做一次"的场景,比如用户输入验证。

3. for 循环

适合已知循环次数的场景。

✅ 示例:
php 复制代码
for ($i = 0; $i < 5; $i++) {
    echo $i;
}
// 输出:01234
📌 三部分说明:
  1. 初始化:$i = 0
  2. 条件判断:$i < 5
  3. 迭代操作:$i++

4. foreach 循环(专为数组设计)

用于遍历数组中的每一个元素。

✅ 示例:
php 复制代码
$arr = [1, 2, 3, 4];
foreach ($arr as $value) {
    echo $value;
}
// 输出:1234
🧠 使用引用时注意:
php 复制代码
foreach ($arr as &$value) {
    $value *= 2;
}
unset($value); // ✅ 必须 unset,否则后续循环可能出错

💡 如果不 unset($value),$value 会保留对数组最后一个元素的引用,可能导致后续使用中"意外修改数组"。


🧩 三、条件结构

1. if、else、elseif

基本的条件判断语句。

✅ 示例:
php 复制代码
$score = 85;
if ($score >= 90) {
    echo "优秀";
} elseif ($score >= 60) {
    echo "及格";
} else {
    echo "不及格";
}

2. switch 判断多个值

适合判断一个变量等于多个值的情况。

✅ 示例:
php 复制代码
$i = 1;
switch ($i) {
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    default:
        echo "i 不是 0 或 1";
}
📌 注意:
  • 每个 case 后面要加 break,否则会"贯穿"执行下一个 case。
  • default 是可选的,用于处理"都不匹配"的情况。

3. match(PHP 8.0+)

比 switch 更现代、更安全,返回值形式,像三元表达式一样使用。

✅ 示例:
php 复制代码
$i = 1;
$result = match ($i) {
    0 => "i equals 0",
    1 => "i equals 1",
    default => "i 不是 0 或 1",
};
echo $result;
📌 优点:
  • 自动严格比较(===)
  • 不允许贯穿(fall-through)
  • 可以直接赋值给变量

🧱 四、跳转结构

1. break

结束当前的 for、foreach、while、do-while、switch 结构。

✅ 示例:
php 复制代码
for ($i = 0; $i < 10; $i++) {
    if ($i == 5) {
        break;
    }
    echo $i;
}
// 输出:01234
📌 可选参数:
php 复制代码
break 2; // 跳出两层循环

2. continue

跳过当前循环中剩余的代码,开始下一次循环。

✅ 示例:
php 复制代码
for ($i = 0; $i < 5; $i++) {
    if ($i == 2) {
        continue;
    }
    echo $i;
}
// 输出:0134

3. goto

跳转到程序中的某个标签位置。

✅ 示例:
php 复制代码
goto end;
echo "这段不会执行";
end:
echo "跳转成功!";
📌 注意:
  • 不能跳进 for、while、switch 等结构中。
  • 可以跳出多重循环,但不建议滥用,容易造成"面条式代码"。

📁 五、文件包含结构

1. include

包含文件,出错时只产生警告,脚本继续执行。

✅ 示例:
php 复制代码
include 'header.php'; // 如果文件不存在,输出警告,继续执行
echo "继续执行";

2. require

包含文件,出错时产生致命错误,脚本停止执行。

✅ 示例:
php 复制代码
require 'config.php'; // 如果文件不存在,脚本停止执行
echo "不会执行";

3. include_once / require_once

确保文件只被包含一次,避免重复定义。

✅ 示例:
php 复制代码
include_once 'functions.php'; // 即使多次调用,也只包含一次

📌 六、总结对比表

结构 用途 是否返回值 是否可跳出 是否可跳过当前循环
while 条件循环 ❌ ✅ (break) ✅ (continue)
do-while 先执行后判断 ❌ ✅ ✅
for 已知循环次数 ❌ ✅ ✅
foreach 遍历数组 ❌ ✅ ✅
if / else / elseif 条件判断 ❌ ❌ ❌
switch 多值判断 ❌ ✅ ❌
match 多值匹配(PHP 8+) ✅ ❌ ❌
break 结束循环或 switch ❌ ✅ ❌
continue 跳过当前循环 ❌ ❌ ✅
goto 跳转到标签 ❌ ✅ ❌
include 包含文件 ❌ ❌ ❌
require 必须包含文件 ❌ ❌ ❌
相关推荐
WeiXin_DZbishe2 小时前
基于微信小程序的本地闲置物品交易平台-计算机毕设 附源码【课程设计】26825
vue.js·spring boot·python·微信小程序·架构·php·课程设计
唐青枫3 小时前
Yii2 Controller 详解:路由、Action、过滤器与 CRUD 实战
php
WeiXin_DZbishe3 小时前
基于Node.js的马拉松赛事管理系统的设计与实现-计算机毕设 附源码【课程设计】90211
java·javascript·vue.js·python·php·课程设计
郑州光合科技余经理6 小时前
出海外卖平台:支付对接为什么要和下单收款分开
android·java·开发语言·前端·后端·php·ai编程
谢亮_vipxieliang6 小时前
PHP 异常处理全解析:try-catch、自定义异常与全局异常处理器
开发语言·php
JaguarJack7 小时前
免费可商用 PHP 管理后台 CatchAdmin V5.4.1 发布,新增 MCP 支持
后端·php·laravel·服务端
BingoGo7 小时前
免费可商用 PHP 管理后台 CatchAdmin V5.4.1 发布,新增 MCP 支持
后端·php
谢亮_vipxieliang7 小时前
多智能体系统的“TCP/IP时刻”:MCP与A2A协议如何定义Agent时代
网络·tcp/ip·ai·php
cleble7 小时前
怎么用用 PowerShell 下载文件
开发语言·php
北京盛世宏博18 小时前
工业环境监测选型:Modbus TCP以太网温湿度传感器部署、调试、避坑全指南
开发语言·网络·php