【PHP 流程控制完全指南】

PHP 流程控制完全指南


🧠 一、什么是流程控制?

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

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

  • 循环结构whiledo-whileforforeach
  • 条件结构ifelseelseifswitchmatch
  • 跳转结构breakcontinuegoto

🔁 二、循环结构

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. ifelseelseif

基本的条件判断语句

✅ 示例:
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

结束当前的 forforeachwhiledo-whileswitch 结构

✅ 示例:
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 "跳转成功!";
📌 注意:
  • 不能跳进 forwhileswitch 等结构中。
  • 可以跳出多重循环,但不建议滥用,容易造成"面条式代码"。

📁 五、文件包含结构

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 必须包含文件
相关推荐
BingoGo2 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
JaguarJack2 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
用户3074596982073 天前
PHP 扩展——从入门到理解
php
鹏仔先生4 天前
拷贝漫画APP下载页PHP程序,后台带免费AI写作
php
云水一下4 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
xingpanvip4 天前
星盘接口开发文档:本命盘接口指南
android·开发语言·css·php·lua
酉鬼女又兒4 天前
零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解
网络·网络协议·tcp/ip·计算机网络·考研·udp·php
dog2504 天前
不要再继续优化 TCP
网络协议·tcp/ip·php
Channing Lewis4 天前
PHP 解析 Excel 的那些坑:一次“行号错位”引发的数据丢失
开发语言·php·excel
Cheng小攸4 天前
渗透行为分析与检测
开发语言·php