PHP while 循环
最后修改于 2025 年 4 月 16 日
PHP 的 while
循环会重复执行一段代码块,只要指定的条件为真。它对于执行重复性任务和处理数据直到满足某个条件至关重要。While 循环是 PHP 中迭代操作的必备工具。
基本定义
while
循环在每次迭代之前都会检查一个条件。如果条件评估为真,则执行代码块。循环会一直持续到条件变为假。
语法:while (condition) { code }
。条件是任何返回布尔值的表达式。如果条件永远不会变为假,循环将无限运行。
与 for 循环不同,while 循环没有内置的初始化或递增步骤。这些必须在循环之前和循环内手动处理。
基本 while 循环
这个例子演示了一个简单的 while 循环,从 1 计数到 5。
<?php declare(strict_types=1); $count = 1; while ($count <= 5) { echo "Count: $count\n"; $count++; }
代码将 $count
初始化为 1。循环在计数为 5 或更少时运行。每次迭代都会打印当前的计数并将其递增。当计数达到 6 时,循环结束。这显示了基本的 while 循环结构。
带中断的无限循环
此示例显示了一个带有条件中断的有意无限循环。
<?php declare(strict_types=1); $value = 0; while (true) { echo "Processing...\n"; $value += 10; if ($value >= 50) { break; } }
循环条件始终为真,从而创建一个无限循环。在内部,我们每次迭代将 $value
增加 10。当 value 达到 50 时,break 语句退出循环。这种模式对于轮询很有用。
逐行读取文件
此示例演示了使用 while 逐行读取文件。
<?php declare(strict_types=1); $file = fopen("data.txt", "r"); while ($line = fgets($file)) { echo "Line: $line"; } fclose($file);
代码打开一个文件用于读取。只要 fgets
返回一行,while 循环就会继续。每次迭代读取并打印一行。当到达 EOF 时,循环停止。在处理完成后,始终关闭文件。
数组处理
此示例演示了如何使用 while 循环处理数组元素。
<?php declare(strict_types=1); $fruits = ["Apple", "Banana", "Cherry"]; $index = 0; while ($index < count($fruits)) { echo "Fruit {$index}: {$fruits[$index]}\n"; $index++; }
代码初始化一个数组和计数器。循环在索引小于数组长度时运行。每次迭代访问一个数组元素。索引是手动递增的。这是 foreach 循环处理数组的替代方案。
嵌套 while 循环
此示例演示了用于多维处理的嵌套 while 循环。
<?php declare(strict_types=1); $row = 1; while ($row <= 3) { $col = 1; while ($col <= 3) { echo "($row,$col) "; $col++; } echo "\n"; $row++; }
外层循环控制行,内层循环控制列。两个循环都有自己的计数器。内层循环在每次外层循环迭代时完全完成。这会创建一个 3x3 的网格输出。嵌套循环功能强大,但可能很复杂。
数据库记录处理
此示例显示了使用 while 循环处理数据库记录。
<?php declare(strict_types=1); $conn = mysqli_connect("localhost", "user", "pass", "db"); $result = mysqli_query($conn, "SELECT * FROM products"); while ($row = mysqli_fetch_assoc($result)) { echo "Product: {$row['name']}, Price: {$row['price']}\n"; } mysqli_close($conn);
代码连接到数据库并查询产品。while 循环处理每一行,直到没有更多行为止。当完成后,mysqli_fetch_assoc
返回 null。这是数据库操作的常见模式。完成后,始终关闭连接。
带逻辑运算符的条件
此示例演示了带有逻辑运算符的复杂条件。
<?php declare(strict_types=1); $attempts = 0; $success = false; while ($attempts < 5 && !$success) { echo "Attempt #" . ($attempts + 1) . "\n"; $success = (rand(1, 10) > 8); $attempts++; } echo $success ? "Success!" : "Failed after 5 attempts.";
循环在尝试次数小于 5 且成功为 false 时运行。每次迭代模拟一个具有随机成功率的操作。该条件将两个检查与 && (AND) 组合在一起。如果任一条件失败,循环将退出。这显示了复杂的循环控制逻辑。
最佳实践
- 初始化: 确保循环变量已正确初始化。
- 终止: 保证循环条件最终会变为 false。
- 复杂性: 为了可读性,避免过于复杂的条件。
- 性能: 将不变的计算移到循环之外。
- 安全: 考虑添加最大迭代限制以确保安全。
来源
本教程介绍了 PHP while 循环,并提供了实际示例,展示了基本用法、文件处理、数据库操作和复杂条件。
作者
列出 所有 PHP 教程。