PHP - Do...While 循环:初学者指南

欢迎,有抱负的程序员们!今天,我们将深入 PHP 循环的精彩世界,特别是 do...while 循环。作为你友好的邻里计算机老师,我将在大量的示例和解释中引导你了解这个概念。所以,拿起你的虚拟记事本,让我们一起开始循环吧!

PHP - Do…While Loop

什么是 Do...While 循环?

在我们进入示例之前,先来了解一下 do...while 循环是什么。想象你正在玩一个游戏,你要不断掷骰子直到得到一个六。你会至少掷一次骰子,对吧?这正是 do...while 循环的工作方式!

do...while 循环至少执行一次代码块,然后检查条件是否为真。如果条件为真,它将继续执行代码块,直到条件变为假。

现在,让我们来看看语法:

do {
// 要执行的代码
} while (条件);

示例 1:基本的 Do...While 循环

让我们从一个简单的示例开始:

<?php
$i = 1;
do {
echo "数字是: $i <br>";
$i++;
} while ($i <= 5);
?>

这里发生了什么?

  1. 我们用值 1 初始化变量 $i
  2. 循环以 do 开始,我们输出 $i 的当前值。
  3. 我们使用 $i++$i 增加 1。
  4. 在关闭的花括号后,我们有 while 条件。它检查 $i 是否小于或等于 5。
  5. 如果条件为真,循环继续;如果为假,停止。

输出:

数字是: 1
数字是: 2
数字是: 3
数字是: 4
数字是: 5

示例 2:带有用户输入的 Do...While 循环

让我们让事情变得更加互动!我们将创建一个简单的猜数字游戏:

<?php
$secretNumber = 7;
do {
$guess = (int)readline("猜一个数字(1到10之间): ");
if ($guess < $secretNumber) {
echo "太低了!再试一次。\n";
} elseif ($guess > $secretNumber) {
echo "太高了!再试一次。\n";
}
} while ($guess != $secretNumber);

echo "恭喜!你猜对了!";
?>

在这个示例中:

  1. 我们设定一个秘密数字(在这个例子中是 7)。
  2. 循环询问用户猜测数字。
  3. 如果猜测太低或太高,它将提供反馈。
  4. 循环继续,直到猜中正确的数字。

这展示了 do...while 循环如何用于输入验证和创建简单的游戏!

示例 3:使用 Do...While 循环读取文件

让我们探索一个更实用的示例 - 读取文件中的行:

<?php
$file = fopen("sample.txt", "r");

do {
$line = fgets($file);
if ($line !== false) {
echo $line . "<br>";
}
} while ($line !== false);

fclose($file);
?>

这里发生了什么:

  1. 我们以读取模式打开名为 "sample.txt" 的文件。
  2. 循环使用 fgets() 从文件中读取一行。
  3. 如果行不是 false(即不是文件末尾),我们输出它。
  4. 循环继续,直到我们到达文件的末尾。
  5. 最后,我们关闭文件。

这个示例展示了 do...while 循环在文件操作中的用途!

递减的 "do...while" 循环

现在,让我们使用 do...while 循环倒计时:

<?php
$countdown = 5;

do {
echo "倒计时 $countdown...<br>";
$countdown--;
} while ($countdown > 0);

echo "发射!?";
?>

在这个宇宙倒计时中:

  1. 我们从 $countdown 设置为 5 开始。
  2. 循环打印当前的倒计时数字。
  3. 我们使用 $countdown-- 递减 $countdown
  4. 只要 $countdown 大于 0,循环就继续。
  5. 一旦我们到达零,我们就发射!

输出:

倒计时 5...
倒计时 4...
倒计时 3...
倒计时 2...
倒计时 1...
发射!?

逆向遍历字符串

让我们用创意逆向遍历一个字符串,使用 do...while 循环:

<?php
$str = "Hello, World!";
$length = strlen($str) - 1;

do {
echo $str[$length];
$length--;
} while ($length >= 0);
?>

这里发生了什么?

  1. 我们从一个字符串 "Hello, World!" 开始。
  2. 我们获取字符串的最后一个索引(长度 - 1)。
  3. 循环从末尾开始打印每个字符。
  4. 我们在每次迭代中递减索引。
  5. 循环继续,直到我们打印出第一个字符。

输出:

!dlroW ,olleH

嵌套的 "do...while" 循环

最后,让我们用一个有趣的模式探索嵌套的 do...while 循环:

<?php
$i = 1;
do {
$j = 1;
do {
echo "* ";
$j++;
} while ($j <= $i);
echo "<br>";
$i++;
} while ($i <= 5);
?>

让我们分解一下:

  1. 外部循环控制行数(在这个例子中是 5)。
  2. 内部循环在每行打印星号。
  3. 每行的星号数等于行号。
  4. 我们使用 <br> 在每行后换行。

输出:

*
* *
* * *
* * * *
* * * * *

方法表

下面是一个表格,总结了我们示例中使用的所有方法:

方法 描述
echo 输出一个或多个字符串
readline 从用户输入中读取一行
fopen 打开一个文件或 URL
fgets 从文件指针中获取一行
fclose 关闭一个打开的文件指针
strlen 返回字符串的长度

就这样,大家!我们已经循环了解了 PHP 的 do...while 循环。记住,熟能生巧,所以继续编码并尝试这些循环。在你意识到之前,你将在编码挑战中绕圈子!快乐编码!??

Credits: Image by storyset