PHP while 循环详解
1. 什么是 while 循环?
while 循环用于在指定条件为 true 时 重复执行代码块。当条件变为 false 时,循环停止。
📌 语法:
while (条件) {
// 代码块
}
✅ 特点:
- 适用于 循环次数不确定 的情况
- 先判断条件,再执行循环体
- 只要条件 始终为 true,循环就会 无限执行(⚠️注意避免死循环)
2. while 循环示例
示例 1:打印 1-5
<?php
$i = 1;
while ($i <= 5) {
echo "当前数值:" . $i . "<br>";
$i++;
}
?>
🔹 解析:
- 初始
$i = 1 while ($i <= 5):只要$i小于等于 5,执行循环体$i++让$i逐步增加,避免死循环
🔹 输出结果:
当前数值:1
当前数值:2
当前数值:3
当前数值:4
当前数值:5
3. while 循环的常见应用
示例 2:累加求和
<?php
$sum = 0;
$i = 1;
while ($i <= 100) {
$sum += $i;
$i++;
}
echo "1 到 100 的总和是:" . $sum;
?>
🔹 解析:
- 变量
$sum用于累加 $i从1递增到100while ($i <= 100)控制循环 运行 100 次
🔹 输出结果:
1 到 100 的总和是:5050
示例 3:读取数据库数据
在实际开发中,while 往往用于 处理数据库查询结果:
<?php
$conn = new mysqli("localhost", "root", "password", "testdb");
$sql = "SELECT name FROM users";
$result = $conn->query($sql);
while ($row = $result->fetch_assoc()) {
echo "用户:" . $row["name"] . "<br>";
}
$conn->close();
?>
🔹 解析:
- 连接数据库并查询
users表 while ($row = $result->fetch_assoc())逐行获取数据,直到NULL- 常用于处理数据库数据
4. do...while 循环(至少执行一次)
📌 语法:
do {
// 代码块
} while (条件);
✅ 区别:
do...while先执行一次代码块,然后判断条件- 适用于 至少执行一次 的情况
示例 4:即使条件不满足,仍然执行一次
<?php
$i = 10;
do {
echo "当前值:" . $i . "<br>";
$i++;
} while ($i <= 5);
?>
🔹 输出:
当前值:10
即使 $i=10,但 do...while 先执行一次,再判断是否继续循环。
5. while 循环常见错误 & 解决方案
❌ 错误 1:死循环
<?php
$i = 1;
while ($i > 0) { // 没有终止条件
echo $i . "<br>";
}
?>
⚠️ 问题:
$i始终大于 0,导致 无限循环,程序崩溃。
✅ 修正
<?php
$i = 1;
while ($i <= 5) {
echo $i . "<br>";
$i++; // 递增,确保最终条件为 false
}
?>
❌ 错误 2:变量未初始化
<?php
while ($i <= 5) {
echo $i . "<br>";
$i++;
}
?>
⚠️ 问题:
$i未初始化,可能导致Undefined variable错误。
✅ 修正
<?php
$i = 1; // 先定义变量
while ($i <= 5) {
echo $i . "<br>";
$i++;
}
?>
6. while vs for vs do...while
while | do...while | for | |
|---|---|---|---|
| 适用场景 | 循环次数不确定 | 至少执行一次 | 循环次数固定 |
| 执行顺序 | 先判断条件,再执行 | 先执行,再判断 | 先初始化,再执行 |
| 是否一定执行 | ❌ 否 | ✅ 是 | ❌ 否 |
✅ 选择指南:
- 循环次数确定 ➝
for - 可能不执行 ➝
while - 至少执行一次 ➝
do...while
7. 练习题
📝 请尝试完成以下任务:
练习 1:输出 1 到 10 的偶数
提示:使用 while,判断偶数 if ($i % 2 == 0)
练习 2:计算 1 到 50 的奇数和
提示:累加奇数 if ($i % 2 != 0)
练习 3:生成 5 个随机数并输出
提示:rand(1, 100)
🔗 相关参考链接
✅ 通过本教程,你已经掌握了 PHP while 循环 的用法、实际应用和常见错误!更多详细内容请关注其他相关文章!