「PHP系列」PHP 循环详解

文章目录

  • 一、while - 只要指定的条件成立,则循环执行代码块
  • 二、do...while - 首先执行一次代码块,然后在指定的条件成立时重复这个循环
  • 三、for - 循环执行代码块指定的次数
  • 四、foreach - 根据数组中每个元素来循环代码块
  • 五、相关链接

一、while - 只要指定的条件成立,则循环执行代码块

在 PHP 中,while 循环是一种用于重复执行代码块的语句,直到指定的条件不再满足为止。它将继续执行循环体中的代码,直到条件表达式的结果为 false

下面是 while 循环的基本语法:

while (条件表达式) {// 循环体中的代码
}

只要条件表达式的值为 true,循环体中的代码就会一直执行。当条件表达式的值为 false 时,循环将终止。

下面是一个详细的案例,演示了如何使用 while 循环来打印从 1 到 10 的数字:

<?php
$counter = 1; // 初始化计数器while ($counter <= 10) {echo $counter . " "; // 打印当前计数器的值$counter++; // 计数器递增
}
?>

在上面的示例中,我们首先初始化了一个名为 $counter 的变量,并将其值设置为 1。然后,我们使用 while 循环来检查 $counter 的值是否小于等于 10。如果是,则执行循环体中的代码,打印当前计数器的值,并将计数器递增 1。这个过程将一直重复,直到计数器的值超过 10,此时循环将终止。

运行上述代码将输出以下结果:

1 2 3 4 5 6 7 8 9 10

你可以根据自己的需求在 while 循环中添加更复杂的逻辑和代码块。只需确保在循环体中适当地更新条件表达式中涉及的变量,以便在适当的时候终止循环。

二、do…while - 首先执行一次代码块,然后在指定的条件成立时重复这个循环

在 PHP 中,do...while 循环是一种后测试循环,即它至少会执行一次循环体中的代码,然后在每次迭代结束后检查条件表达式。如果条件表达式的值为 true,则循环将继续执行;如果为 false,则循环将终止。

下面是 do...while 循环的基本语法:

do {// 循环体中的代码
} while (条件表达式);

while 循环不同,do...while 循环会先执行循环体中的代码,然后再检查条件表达式。这意味着循环体中的代码至少会执行一次,即使条件表达式的初始值为 false

下面是一个详细的案例,演示了如何使用 do...while 循环来读取用户输入,直到用户输入 “quit” 为止:

<?php
$userInput = ''; // 初始化用户输入变量do {echo "请输入一些文本(输入 'quit' 退出):";$userInput = trim(fgets(STDIN)); // 读取用户输入并去除两端的空格if ($userInput !== 'quit') {echo "你输入了:$userInput\n"; // 打印用户输入的内容}
} while ($userInput !== 'quit');echo "已退出循环。\n";
?>

在上面的示例中,我们首先初始化了一个名为 $userInput 的变量,用于存储用户输入的内容。然后,我们使用 do...while 循环来不断读取用户的输入,直到用户输入 “quit” 为止。

在循环体内,我们使用 echo 语句提示用户输入文本,并使用 fgets(STDIN) 函数从标准输入(通常是键盘)读取一行文本。然后,我们使用 trim() 函数去除输入字符串两端的空格。

接下来,我们检查 $userInput 是否不等于 ‘quit’。如果不等于,我们使用另一个 echo 语句打印出用户输入的内容。最后,在循环的末尾,我们再次检查 $userInput 的值。如果它仍然不等于 ‘quit’,循环将继续执行;否则,循环将终止。

请注意,这个示例假设你在一个可以通过命令行交互的环境中运行 PHP 代码,比如在终端或命令提示符下。在 Web 环境中,读取用户输入通常是通过表单或其他方式完成的,而不是使用 fgets(STDIN)

运行上述代码后,你可以输入任意文本,每次输入后都会显示你输入的内容,直到你输入 “quit” 为止。此时,循环将终止,并输出 “已退出循环。”。

三、for - 循环执行代码块指定的次数

在 PHP 中,for 循环是一种非常常用的循环结构,它允许你重复执行一段代码块指定次数。for 循环通常用于已知循环次数的场景。

下面是 for 循环的基本语法:

for (初始化表达式; 条件表达式; 更新表达式) {// 循环体中的代码
}
  • 初始化表达式:在循环开始之前执行一次,通常用于设置循环变量的初始值。
  • 条件表达式:在每次循环迭代开始时检查,如果为 true,则执行循环体中的代码;如果为 false,则退出循环。
  • 更新表达式:在每次循环迭代结束时执行,通常用于更新循环变量。

下面是一个详细的案例,演示了如何使用 for 循环来打印从 1 到 10 的数字的平方:

<?php
for ($i = 1; $i <= 10; $i++) {$square = $i * $i; // 计算平方echo "$i 的平方是 $square\n"; // 打印结果
}
?>

在上面的示例中,我们初始化了一个名为 $i 的变量,并将其值设置为 1。然后,我们使用 for 循环来检查 $i 的值是否小于等于 10。如果是,则执行循环体中的代码。在循环体中,我们计算 $i 的平方,并将结果存储在 $square 变量中。然后,我们使用 echo 语句打印出当前 $i 的值及其平方。最后,我们使用 $i++(即 $i = $i + 1 的简写形式)来递增 $i 的值。

运行上述代码将输出以下结果:

1 的平方是 1
2 的平方是 4
3 的平方是 9
4 的平方是 16
5 的平方是 25
6 的平方是 36
7 的平方是 49
8 的平方是 64
9 的平方是 81
10 的平方是 100

这个示例展示了如何使用 for 循环进行简单的数学运算和结果输出。你可以根据自己的需求在 for 循环中添加更复杂的逻辑和操作。只需要确保在循环体中适当地更新循环变量,以便在适当的时候终止循环。

四、foreach - 根据数组中每个元素来循环代码块

在 PHP 中,foreach 循环是一种用于遍历数组或对象的便捷方式。它会自动遍历数组或对象的每个元素,并将当前元素的值赋给一个临时变量,然后在循环体中执行相应的操作。

下面是 foreach 循环的基本语法:

foreach (数组或对象 as $key => $value) {// 循环体中的代码
}
  • 数组或对象:要遍历的数组或对象。
  • $key:可选的键名变量,用于存储当前元素的键名。
  • $value:当前元素的值。

如果你不关心键名,也可以只使用 $value 变量。

下面是一个详细的案例,演示了如何使用 foreach 循环来遍历一个数组并打印出每个元素的值:

<?php
$fruits = array('apple', 'banana', 'orange', 'grape'); // 创建一个包含水果名称的数组foreach ($fruits as $fruit) {echo $fruit . "\n"; // 打印每个水果的名称
}
?>

运行上述代码将输出以下结果:

apple
banana
orange
grape

在这个示例中,我们创建了一个名为 $fruits 的数组,它包含了四个水果的名称。然后,我们使用 foreach 循环遍历这个数组。在每次迭代中,当前水果的名称被赋给 $fruit 变量,然后我们使用 echo 语句打印出这个名称。

如果你还需要访问数组的键名,可以稍微修改一下循环的语法:

<?php
$fruits = array('a' => 'apple', 'b' => 'banana', 'c' => 'orange', 'd' => 'grape'); // 创建一个包含水果名称和键名的数组foreach ($fruits as $key => $fruit) {echo "键名: $key, 值: $fruit\n"; // 打印键名和对应的水果名称
}
?>

运行上述代码将输出以下结果:

键名: a, 值: apple
键名: b, 值: banana
键名: c, 值: orange
键名: d, 值: grape

在这个修改后的示例中,我们使用了 $key => $fruit 的语法来同时获取键名和值。然后,在循环体中,我们打印出每个元素的键名和对应的值。

foreach 循环是处理数组和集合数据时非常有用的工具,它可以极大地简化代码并提高可读性。你可以根据自己的需求在循环体中添加任何逻辑或操作来处理数组或对象的元素。

五、相关链接

  1. php官网
  2. php_Github
  3. PHP实现Token
  4. 「PHP系列」PHP简介与起步
  5. 「PHP系列」PHP语法介绍
  6. 「PHP系列」PHP变量
  7. 「PHP系列」PHP echo/print语句、数据类型详解
  8. 「PHP系列」PHP 常量/字符串、类型比较
  9. 「PHP系列」PHP 运算符详解
  10. 「PHP系列」If…Else语句/switch语句
  11. 「PHP系列」数组详解
  12. 「PHP系列」PHP数组排序及运用场景

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/798743.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024 Tuxera NTFS for Mac功能介绍及如何安装使用

随着科技的发展&#xff0c;我们的日常生活和工作越来越依赖于电子设备。而在这些设备中&#xff0c;Mac由于其出色的稳定性和易用性&#xff0c;成为了许多用户的首选。然而&#xff0c;尽管Mac自带的文件系统已经足够强大&#xff0c;但仍有一些用户希望获得更加高效、稳定的…

Java学习笔记NO.30

1. ArrayList ArrayList是Java中最常用的动态数组实现。它可以自动扩展以容纳任意数量的元素&#xff0c;并提供了快速的随机访问能力。 import java.util.ArrayList; public class ArrayListExample { public static void main(String[] args) { // 创建 ArrayList Array…

【氮化镓】在轨实验研究辐射对GaN器件的影响

【Pioneering evaluation of GaN transistors in geostationary satellites】 摘要&#xff1a; 这篇论文介绍了一项为期6年的空间实验结果&#xff0c;该实验研究了在地球静止轨道上辐射对氮化镓&#xff08;GaN&#xff09;电子元件的影响。实验使用了四个GaN晶体管&#xf…

如何水出第一篇SCI:SCI发刊历程,从0到1全过程经验分享!!!

如何水出第一篇SCI&#xff1a;SCI发刊历程&#xff0c;从0到1全路程经验分享&#xff01;&#xff01;&#xff01; 详细的改进教程以及源码&#xff0c;戳这&#xff01;戳这&#xff01;&#xff01;戳这&#xff01;&#xff01;&#xff01;B站&#xff1a;Ai学术叫叫兽e…

代码随想录算法训练营第四十天|leetcode139题

一、leetcode第139题 本题是完全背包问题&#xff0c;由于可以重复使用&#xff0c;因此需要先遍历背包再遍历物品&#xff0c;dp[i]的含义是在长度为i处能否从数组中找到元素组成。 具体代码如下&#xff1a; class Solution { public:bool wordBreak(string s, vector<…

WPS解决插入公式在正文带来行间距变大问题

问题描述 写论文解释公式时&#xff0c;插入对应的变量&#xff0c;导致行间距变大&#xff0c;如图 显然上文与下文行间距不等。但无法通过修改数值修改下文行间距。 解决办法

java - 读取配置文件

文章目录 1. properties2. XML(1) dom4j(2) XPath 1. properties // 创建properties对象用于读取properties文件Properties properties new Properties();properties.load(new FileReader("src/main/resources/test.properties"));String name properties.getPrope…

消息队列之RabbitMQ的安装配置

一&#xff0c;前言 RabbitMQ是由erlang语言开发&#xff0c;基于AMQP&#xff08;Advanced Message Queue 高级消息队列协议&#xff09;协议实现的消息队列&#xff0c;它是一种应用程序之间的通信方法&#xff0c;消息队列在分布式系统开发中应用非常广泛。点击跳转RabbitM…

3、计算机的执行过程

三、存储器 1、存储器的分类 按存储器介质份分类 半导体存储器&#xff08;TTL&#xff08;集成度低、功耗高、速度快&#xff09;、MOS&#xff08;功耗低&#xff0c;集成度高&#xff09;&#xff09;。U盘等&#xff1b;易失 磁表面存储器&#xff08;磁头、载磁体&#xf…

90天玩转Python—05—基础知识篇:Python基础知识扫盲,使用方法与注意事项

90天玩转Python系列文章目录 90天玩转Python—01—基础知识篇:C站最全Python标准库总结 90天玩转Python--02--基础知识篇:初识Python与PyCharm 90天玩转Python—03—基础知识篇:Python和PyCharm(语言特点、学习方法、工具安装) 90天玩转Python—04—基础知识篇:Pytho…

SSM整合----第一个SSM项目

文章目录 前言一、使用步骤1.引入库2.建表3 项目结构4 web.xml的配置5 配置数据源6 SpringMVC配置7 配置MyBatis Mapper8 书写控制类 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; SSM整合是指Spring、SpringMVC和MyBatis这三个框架的整合使用。…

MTK i500p AIoT解决方案

一、方案概述 i500p是一款强大而高效的AIoT平台&#xff0c;专为便携式、家用或商用物联网应用而设计&#xff0c;这些应用通常需要大量的边缘计算&#xff0c;需要强大的多媒体功能和多任务操作系统。该平台集成了Arm Cortex-A73 和 Cortex-A53 的四核集群&#xff0c;工作频…

【论文速读】| 大语言模型平台安全:将系统评估框架应用于OpenAI的ChatGPT插件

本次分享论文为&#xff1a;LLM Platform Security: Applying a Systematic Evaluation Framework to OpenAI’s ChatGPT Plugins 基本信息 原文作者&#xff1a;Umar Iqbal, Tadayoshi Kohno, Franziska Roesner 作者单位&#xff1a;华盛顿大学圣路易斯分校&#xff0c;华盛…

web安全学习笔记(7)

记一下第十一节课的内容。 这节课主要学习post传参和js弹窗与跳转 一、post传参 1.简单的post传参介绍 将index.php重命名为login.php&#xff0c;并将login.html从template文件夹下拿到根目录下&#xff0c;并删除template目录。 将login.html中内容改为如下所示&#xf…

Ubuntu下TexStudio如何兼容中文

怎么就想起来研究一下这个&#xff1f; 我使用大名鼎鼎的3Blue1Brown数学动画引擎Manim&#xff0c;制作了一个特别小的动画视频克里金插值。在视频中&#xff0c;绘制文字时&#xff0c;Manim使用到了texlive texlive-latex-extra这些库。专业的关系&#xff0c;当年的毕设没…

一个更难破解的加密算法 Bcrypt

BCrypt是由Niels Provos和David Mazires设计的密码哈希函数&#xff0c;他是基于Blowfish密码而来的&#xff0c;并于1999年在USENIX上提出。 除了加盐来抵御rainbow table 攻击之外&#xff0c;bcrypt的一个非常重要的特征就是自适应性&#xff0c;可以保证加密的速度在一个特…

设计模式:生活中的迭代器模式

迭代器模式可以通过日常生活中的餐厅菜单遍历来类比。想象一下&#xff0c;你走进一家餐厅&#xff0c;服务员给了你一本菜单。这本菜单就像是一个聚合对象&#xff0c;它包含了各种菜品。你可以一页一页地翻阅菜单&#xff0c;这个翻阅的过程就像是使用迭代器来遍历聚合对象的…

linux学习:gcc编译

编译.c gcc hello.c -o hello 用gcc 这个工具编译 hello.c&#xff0c;并且使之生成一个二进制文件 hello。 其中 –o 的意义是 output&#xff0c;指明要生成的文件的名称&#xff0c;如果不写 –o hello 的话会生成默 认的一个 a.out 文件 获得 C 源程序经过预处理之后的文…

书生·浦语训练营二期第三次笔记-茴香豆:搭建你的 RAG 智能助理

RAG学习文档1&#xff1a; https://paragshah.medium.com/unlock-the-power-of-your-knowledge-base-with-openai-gpt-apis-db9a1138cac4 RAG学习文档2: https://blog.demir.io/hands-on-with-rag-step-by-step-guide-to-integrating-retrieval-augmented-generation-in-llms-a…

C/C++ std::list 插入时即整理顺序(ASC升序)

下面是一个随机的 packet&#xff08;帧&#xff09;插入函数&#xff0c;ASC升序&#xff0c;按 “packet_seq” 来控制成员之间的顺序&#xff0c;该函数优化了&#xff0c;倾向头、倾向尾。 即&#xff1a; 根据 packet_seq 可以得出&#xff0c;插入位置的最短距离&#x…