PHP8的循环控制语句-PHP8知识详解

我们在上一节讲的是条件控制语句,本节课程我们讲解循环控制语句。循环控制语句中,主要有for循环、while循环、do...while循环和foreach循环。

在编写代码时,经常需要反复运行同一代码块。我们可以使用循环来执行这样的任务,而不是在脚本中添加若干几乎相等的代码行。

1、for循环语句

for循环是一种常见的循环语句,用于指定循环条件循环体。它包含三个表达式,分别控制循环的初始化、条件和每次迭代后的操作。for循环是PHP的计数循环结构,其语法格式为:

复制代码
<?php
    for(初始表达式;条件表达式;迭代表达式){
        语句;
    }
?>

其中,初始化表达式在第一次循环时无条件取一次值;条件表达式在每次循环开始前求值,如果值为真,则执行循环体里面的语句。否则,跳出循环,继续往下执行;迭代表达式在每次循环后被执行。for循环语句的流程控制执行图如下:

接下来,我们看一个经典示例:1到100的和,代码如下:

复制代码
<?php //1-100利用for循环1-100累加
 $sum=0;//初始化sum值为0
for($i=1;$i<=100;$i++){//定义i,循环次数,一般求1-100的和,从1开始一直加到100
          $sum+=$i;//每次累加传给sum,然后i循环,直道100。
}
echo "1-100之间累加的和为:".$sum;
?>

执行结果为:

复制代码
1-100之间累加的和为:5050

2、while循环

while循环是PHP中最简单的循环语句,使用while关键字,只要指定的条件为真,就会不断执行循环体。语法格式如下:

复制代码
<?php
while(条件表达式){
     循环语句;
}
?>

当表达式的值为真时,将执行循环体的语句,执行结束以后,再返回到表达式继续继续判断,直到表达式的值为假,才跳出循环。

while循环语句的执行流程控制图如下:

下面,我们也用一个经典案例进行代码示范,输出10以内的偶数,代码如下:

复制代码
<?php
$num=1;  //声明一个https://www.phpfw.com/tag/zhengxing/https://www.phpfw.com/tag/bianliang/$num
$str="10以内的偶数为:"; //声明一个字符型变量$str
while($num <= 10){  //判断变量是否小于等于10
     if($num % 2 == 0){ //判断是否是偶数
          $str.=$num." ";  //给$sumhttps://www.phpfw.com/tag/fuzhi/到$str
     }
     $num++; //变量$sum加1
}
echo $str; //输出https://www.phpfw.com/tag/zifuchuan/$str
?>

运行结果如下:

复制代码
10以内的偶数为:2 4 6 8 10

3、do...while循环:

do...while循环先执行一次循环体,然后再判断条件是否为真。如果条件为真,则继续执行循环体,否则循环结束。

while循环和do...while循环的区别在于,do...while循环比while循环多循环一次。当while表达式的值为假时,while循环直接跳出当前循环。而do...while循环语句则是先执行一遍程序块,然后再对表达式进行判断。do...while循环语句控制流程图如下:

通过一个示范代码进行学习,我们输出10(不含)以内的整数。代码如下:

复制代码
<?php
$i = 0; //声明一个整型变量 $i
do {
    echo $i; //输出变量$i
    $i++;   //变量$i加1
} while ($i < 10); //输出小于10的变量$i
?>

输出结果为:

复制代码
0123456789

4、foreach循环

foreach循环用于遍历数组对象的元素。示范代码:

复制代码
<?php
$array = [1, 2, 3, 4, 5];
foreach ($array as $value) {
    echo $value;
}
?>

运行结果为:

复制代码
12345

到此为止,循环控制语句中的for循环、while循环、do...while循环和foreach循环就讲解完毕。欢迎你学习《PHP8知识详解》系列教程。

相关推荐
扫地的小何尚3 小时前
NVIDIA Dynamo深度解析:如何优雅地解决LLM推理中的KV缓存瓶颈
开发语言·人工智能·深度学习·机器学习·缓存·llm·nvidia
yi碗汤园4 小时前
【一文了解】C#的StringSplitOptions枚举
开发语言·前端·c#
无敌最俊朗@5 小时前
C++ 序列容器深度解析:vector、deque 与 list
开发语言·数据结构·数据库·c++·qt·list
Da Da 泓5 小时前
LinkedList模拟实现
java·开发语言·数据结构·学习·算法
MOON404☾5 小时前
基于TCP的简易端口扫描器
网络·tcp/ip·php
Humbunklung6 小时前
VC++ 使用OpenSSL创建RSA密钥PEM文件
开发语言·c++·openssl
Humbunklung6 小时前
填坑:VC++ 采用OpenSSL 3.0接口方式生成RSA密钥
开发语言·c++·rsa·openssl 3.0
zl21878654487 小时前
Playwright同步、异步、并行、串行执行效率比较
开发语言·python·测试工具
Tony Bai8 小时前
【Go开发者的数据库设计之道】05 落地篇:Go 语言四种数据访问方案深度对比
开发语言·数据库·后端·golang
gopyer8 小时前
180课时吃透Go语言游戏后端开发3:Go语言中其他常用的数据类型
开发语言·游戏·golang·游戏后端开发