摘要訊息 : 學習 PHP 中的迴圈.
0. 前言
本文于 2022 年 3 月 18 日进行一次更新和修正. 修正之后本文已经归档, 不再享受更新.
1. while
语句
while(条件判断) {
statement
}
当 条件判断
返回 True
, 则一直执行 while
内的语句一次 statement
; 直到 条件判断
返回 False
的时候, 退出循环.
while
语句的另外一种书写格式 :
while(条件判断) :
statement
endwhile;
2. do
-while
语句
do {
statement
}while(条件判断);
先执行一次循环内的语句 statement
, 再去条件判断, 当 条件判断
返回 True
, 则一直去执行循环内的语句一次 statement
; 直到 条件判断
返回 False
的时候, 退出循环.
do
-while
语句的另外一种书写方法 :
do :
statement
while(条件判断);
3. for
语句
for(初始条件; 条件判断; 条件增量) {
statement
}
首先赋予一个变量 初始条件
, 并且当 条件判断
返回 True
的时候, 执行一次 for
循环内的语句 statement
, 再改变变量数值继续判断, 当 条件判断
返回 True
的时候, 继续执行 for
循环内的语句, 直到 条件判断
返回 False
的时候退出循环.
for
循环的另外一种写法 :
for(初始条件; 条件判断; 条件增量) :
statement
endfor;
4. foreach
语句
foreach
语句有点像 Swift 里面的 for
-in
循环, 作用是对数组进行遍历 :
for(数组 as 数组元素值) {
statement for array
}
for(数组 as 键值 => 数组元素值) {
statement for array
}
示例 :
<?php
$array = array("a" => "one", "b" => "two", "c" => "three");
foreach($array as $key => $value) {
echo $key." => ".$value;
echo "\n";
}
?>
/* 结果 :
a => one
b => two
c => three
*/
5. break
关键字
在说 break
关键字之前, 首先总结一下 break
关键字的作用域 : for
语句, while
语句, do
-while
语句, foreach
语句和 switch
语句.
break
对于 switch
语句的作用, 在上一个课程中已经说的很清楚了, 这里不再累赘.
在这些语句中, 若 break
关键字被执行, 那么立刻跳出这些作用域的结构. 对于循环结构来说, 立刻停止循环, break
下面的语句不再执行; 对于条件判断 switch
语句来说, 立刻停止判断, 跳出结构, break
下面的语句不再执行.
而 PHP 中, break
关键字有一个特性, 就是后面可以带一个数字, 即 break n
. 此时就要用到 break
关键字的作用域. break n
后面的 n
代表跳出 n
个 break
关键字作用域的结构. 下面有个以类 Debug Run 执行的实例 :
<?php
$n = 0;
while(1) {
$n++;
switch($n) {
case 1 : // 第一次执行的时候, $n = 1, 在 switch 语句中执行 echo $n; 和 break;, 那么输出的结果为 1
echo $n;
break;
case 2 : // 第二次执行的时候, $n = 2, switch 语句来到这里
echo $n; // 首先输出了 $n 的值 : 2
break 2; // 来到 break 2 语句, 首先执行第一次 break, 即跳出 switch 语句结构. 执行完毕之后, 因为 break 后面跟着的是 2, 所以还要执行一次 break, 即跳出 while 循环结构. 因为 while 循环外不再有语句, 所以到这里程序直接结束
default :
break;
}
}
?>
/* 结果 :
12
*/
换句话说, break n
有点类似于一个循环, 即执行 n
次 break
. 所以, break
和 break 1
其实是一样的, 当你输入 break
的时候, 相当于在执行 break 1
, 因为几乎没人喜欢后面加多个 1
, 所以很少见到有人的程序里有 break 1
.
6. continue
关键字
continue
关键字只作用于循环. continue
关键字的意思是结束这一次循环, 立刻进入下一个循环 (不是立刻寻找并进入下一个循环体, 是循环体内立刻停止并执行下一次循环) :
<?php
$cnt = 0; // 计数器, 计算女生的数量
$arr = array(
"A" =>"male",
"B" => "female",
"C" => "male",
"D" => "female",
"E" => "male",
"F" => "male"
);
foreach($arr as $key => $value) {
if($value == "male") {
continue; // 当性别为男性的时候, 执行 continue 语句, 即立刻停止循环, 进入下一个循环 (后面的 $cnt++ 不再执行, 否则就是每一个都计数
}
$cnt++;
}
echo $cnt; // 结果 : 2
?>
continue
和 break
相似, 在 PHP 中也有一个 continue n
的语句, 因为作用差不多, 所以这里不再累赘.
自創文章, 原著 : Jonny. 如若閣下需要轉發, 在已經授權的情況下請註明本文出處 :