PHP - Do...While Loop: A Beginner's Guide

歡迎,有志於编程的同學們!今天,我們將進入PHP循環的精彩世界,特別是do...while循環。作為你們親切友善的鄰居計算機老師,我將帶領你們通過大量的範例和解釋來理解這個概念。所以,拿起你的虛擬筆記本,讓我們開始循環之旅吧!

PHP - Do…While Loop

What is a Do...While Loop?(什么是do...while循环?)

在我們投入範例之前,讓我們先了解一下do...while循環是什麼。想像你正在玩一個遊戲,你要不斷地擲骰子直到你得到一個六。你至少會擲一次骰子,對吧?這正是do...while循環的工作原理!

do...while循環會先至少執行一次代碼塊,然後檢查條件是否為真。如果條件為真,它會繼續重複執行代碼塊,直到條件變為假。

現在,讓我們看看語法:

do {
// 要執行的代碼
} while (條件);

Example 1: Basic Do...While Loop(範例1:基本的do...while循环)

讓我們從一個簡單的範例開始:

<?php
$i = 1;
do {
echo "The number is: $i <br>";
$i++;
} while ($i <= 5);
?>

這裡發生了什麼?

  1. 我們初始化一個變量$i,其值為1。
  2. 循環從do開始,我們輸出$i的當前值。
  3. 我們使用$i++$i增加1。
  4. 在結束大括號後,我們有while條件。它檢查$i是否小於或等於5。
  5. 如果條件為真,循環繼續;如果為假,則停止。

輸出:

The number is: 1
The number is: 2
The number is: 3
The number is: 4
The number is: 5

Example 2: Do...While Loop with User Input(範例2:帶用戶輸入的do...while循环)

讓我們讓事情更具互動性!我們將創建一個簡單的猜數遊戲:

<?php
$secretNumber = 7;
do {
$guess = (int)readline("Guess the number (between 1 and 10): ");
if ($guess < $secretNumber) {
echo "Too low! Try again.\n";
} elseif ($guess > $secretNumber) {
echo "Too high! Try again.\n";
}
} while ($guess != $secretNumber);

echo "Congratulations! You guessed it right!";
?>

在這個範例中:

  1. 我們設定一個秘密數字(在這裡是7)。
  2. 循環請求用戶猜數字。
  3. 如果猜測的數字太小或太大,它會提供反饋。
  4. 循環會持續,直到猜中正確的數字。

這演示了如何使用do...while循環進行輸入驗證和創建簡單遊戲!

Example 3: File Reading with Do...While Loop(範例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循環在文件操作中的用途!

Decrementing a "do...while" Loop(do...while循环的倒數)

現在,讓我們使用do...while循環來倒數:

<?php
$countdown = 5;

do {
echo "T-minus $countdown...<br>";
$countdown--;
} while ($countdown > 0);

echo "Blast off! ?";
?>

在這個宇宙倒數中:

  1. 我們從5開始$countdown
  2. 循環打印當前的倒數數字。
  3. 我們使用$countdown--$countdown減1。
  4. $countdown大於0時,循環繼續。
  5. 一旦我們達到零,我們就發射!

輸出:

T-minus 5...
T-minus 4...
T-minus 3...
T-minus 2...
T-minus 1...
Blast off! ?

Traverse a String in Reverse Order(反序遍历字符串)

讓我們創造性地使用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

Nested "do...while" Loops(嵌套的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>在每行後移動到下一行。

輸出:

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

Methods Table(方法表)

這是一個總結我們在範例中使用的方法的表格:

方法 描述
echo 輸出一個或多個字符串
readline 從用戶輸入讀取一行
fopen 打開文件或URL
fgets 從文件指針獲取一行
fclose 關閉打開的文件指針
strlen 返回字符串的長度

這就是PHP的do...while循環的來龍去脈。記住,熟能生巧,所以請持續編程並實驗這些循環。在你還沒有察覺之前,你將會在編程挑戰中繞圈子!快樂編程!??

Credits: Image by storyset