- PHP 教程
- PHP - 首页
- PHP - 简介
- PHP - 安装
- PHP - 历史
- PHP - 特性
- PHP - 语法
- PHP - Hello World
- PHP - 注释
- PHP - 变量
- PHP - Echo/Print
- PHP - var_dump
- PHP - $ 和 $$ 变量
- PHP - 常量
- PHP - 魔术常量
- PHP - 数据类型
- PHP - 类型转换
- PHP - 类型混淆
- PHP - 字符串
- PHP - 布尔值
- PHP - 整数
- PHP - 文件与 I/O
- PHP - 数学函数
- PHP - Heredoc 和 Nowdoc
- PHP - 复合类型
- PHP - 文件包含
- PHP - 日期和时间
- PHP - 标量类型声明
- PHP - 返回类型声明
- PHP 运算符
- PHP - 运算符
- PHP - 算术运算符
- PHP - 比较运算符
- PHP - 逻辑运算符
- PHP - 赋值运算符
- PHP - 字符串运算符
- PHP - 数组运算符
- PHP - 条件运算符
- PHP - 展开运算符
- PHP - 空值合并运算符
- PHP - 宇宙飞船运算符
- PHP 控制语句
- PHP - 决策
- PHP - If…Else 语句
- PHP - Switch 语句
- PHP - 循环类型
- PHP - For 循环
- PHP - Foreach 循环
- PHP - While 循环
- PHP - Do…While 循环
- PHP - Break 语句
- PHP - Continue 语句
- PHP 函数
- PHP - 函数
- PHP - 函数参数
- PHP - 按值传递
- PHP - 按引用传递
- PHP - 默认参数
- PHP - 具名参数
- PHP - 可变参数
- PHP - 返回值
- PHP - 传递函数
- PHP - 递归函数
- PHP - 类型提示
- PHP - 变量作用域
- PHP - 严格类型
- PHP - 匿名函数
- PHP - 箭头函数
- PHP - 可变函数
- PHP - 局部变量
- PHP - 全局变量
- PHP 超全局变量
- PHP - 超全局变量
- PHP - $GLOBALS
- PHP - $_SERVER
- PHP - $_REQUEST
- PHP - $_POST
- PHP - $_GET
- PHP - $_FILES
- PHP - $_ENV
- PHP - $_COOKIE
- PHP - $_SESSION
- PHP 文件处理
- PHP - 文件处理
- PHP - 打开文件
- PHP - 读取文件
- PHP - 写入文件
- PHP - 文件是否存在
- PHP - 下载文件
- PHP - 复制文件
- PHP - 追加文件
- PHP - 删除文件
- PHP - 处理 CSV 文件
- PHP - 文件权限
- PHP - 创建目录
- PHP - 列出文件
- 面向对象 PHP
- PHP - 面向对象编程
- PHP - 类和对象
- PHP - 构造函数和析构函数
- PHP - 访问修饰符
- PHP - 继承
- PHP - 类常量
- PHP - 抽象类
- PHP - 接口
- PHP - 特性
- PHP - 静态方法
- PHP - 静态属性
- PHP - 命名空间
- PHP - 对象迭代
- PHP - 封装
- PHP - Final 关键字
- PHP - 重载
- PHP - 克隆对象
- PHP - 匿名类
- PHP Web 开发
- PHP - Web 概念
- PHP - 表单处理
- PHP - 表单验证
- PHP - 表单邮件/URL
- PHP - 完整表单
- PHP - 文件包含
- PHP - GET 和 POST
- PHP - 文件上传
- PHP - Cookie
- PHP - Session
- PHP - Session 选项
- PHP - 发送邮件
- PHP - 对输入进行清理
- PHP - Post-Redirect-Get (PRG)
- PHP - 闪存消息
- PHP 高级
- PHP - MySQL
- PHP.INI 文件配置
- PHP - 数组解构
- PHP - 编码规范
- PHP - 正则表达式
- PHP - 错误处理
- PHP - Try…Catch
- PHP - 调试 Bug
- PHP - 针对 C 开发人员
- PHP - 针对 PERL 开发人员
- PHP - 框架
- PHP - Core PHP 与框架
- PHP - 设计模式
- PHP - 过滤器
- PHP - JSON
- PHP - 异常
- PHP - 特殊类型
- PHP - 哈希
- PHP - 加密
- PHP - is_null() 函数
- PHP - 系统调用
- PHP - HTTP 认证
- PHP - 交换变量
- PHP - Closure::call()
- PHP - 过滤后的 unserialize()
- PHP - IntlChar
- PHP - CSPRNG
- PHP - 期望
- PHP - Use 语句
- PHP - 整数除法
- PHP - 已弃用的特性
- PHP - 已删除的扩展和 SAPI
- PHP - PEAR
- PHP - CSRF
- PHP - FastCGI 进程
- PHP - PDO 扩展
- PHP - 内置函数
- PHP 有用资源
- PHP - 速查表
- PHP - 问答
- PHP - 快速指南
- PHP - 在线编译器
- PHP - 有用资源
- PHP - 讨论
PHP - Do…While 循环
“do…while”循环是 PHP 中另一种循环结构。这种类型的循环类似于while循环,但测试条件是在每次迭代结束时检查,而不是在新迭代开始时检查。
while循环在进入循环之前验证真值条件,而在“do…while”循环中,真值条件在重新进入循环之前验证。因此,“do…while”循环保证至少执行一次迭代,无论真值条件如何。
下图通过使用两种循环的比较流程图表示,展示了“while”循环和“do…while”循环的区别。
构成“do…while”循环的语法与其在 C 语言中的对应部分类似。
do { statements; } while (expression);
示例
这是一个“do…while”循环的简单示例,它打印迭代编号 1 到 5。
<?php $i=1; do{ echo "Iteration No: $i \n"; $i++; } while ($i<=5); ?>
它将产生以下输出:
Iteration No: 1 Iteration No: 2 Iteration No: 3 Iteration No: 4 Iteration No: 5
示例
以下代码使用while循环,也生成相同的输出:
<?php $i=1; while ($i<=5){ echo "<h3>Iteration No: $i</h3>"; $i++; } ?>
因此,可以说“do…while”和“while”循环的行为类似。但是,当计数器变量(在本例中为$i)的初始值设置为大于 while 关键字前面的括号中测试表达式中使用的值时,差异将变得明显。
示例
在以下代码中,使用了while和“do…while”这两个循环。while循环的计数器变量是$i,而“do…while”循环的计数器变量是$j。两者都初始化为 10(任何大于 5 的值)。
<?php echo "while Loop \n"; $i=10; while ($i<=5){ echo "Iteration No: $i \n"; $i++; } echo "do-while Loop \n"; $j=10; do{ echo "Iteration No: $j \n"; $j++; } while ($j<=5); ?>
它将产生以下输出:
while Loop do - while Loop Iteration No: 10
结果表明,while循环不执行任何迭代,因为条件在开始时就是假($i初始化为 10,大于测试条件$i<=5)。另一方面,“do…while”循环即使计数器变量$j初始化为大于测试条件的值,也经历第一次迭代。
因此,我们可以推断,“do…while”循环保证至少执行一次迭代,因为测试条件是在循环块结束时验证的。while循环可能不执行任何迭代,因为测试条件是在进入循环块之前验证的。
另一个语法差异是“do…while”中的while语句以分号结束。对于while循环,括号后面跟着一个花括号括起来的循环块。
除此之外,没有其他差异。可以互换使用这两种类型的循环。
递减“do…while”循环
要设计一个递减计数的“do…while”,请将计数器变量初始化为较高的值,在循环内使用递减运算符(--)来减少每次迭代的计数器值,并在while括号中设置测试条件,以使循环运行到计数器大于所需最后一个值为止。
示例
在下面的示例中,计数器从 5 递减到 1。
<?php $j=5; do{ echo "Iteration No: $j \n"; $j--; } while ($j>=1); ?>
它将产生以下输出:
Iteration No: 5 Iteration No: 4 Iteration No: 3 Iteration No: 2 Iteration No: 1
反向遍历字符串
在 PHP 中,字符串可以被视为字符的索引数组。我们可以通过运行递减的“do…while”循环,从后到前一次提取并显示一个字符,如下所示:
<?php $string = "TutorialsPoint"; $j = strlen($string); do{ $j--; echo "Character at index $j : $string[$j] \n"; } while ($j>=1); ?>
它将产生以下输出:
Character at index 13 : t Character at index 12 : n Character at index 11 : i Character at index 10 : o Character at index 9 : P Character at index 8 : s Character at index 7 : l Character at index 6 : a Character at index 5 : i Character at index 4 : r Character at index 3 : o Character at index 2 : t Character at index 1 : u Character at index 0 : T
嵌套“do…while”循环
像for循环或while循环一样,您也可以编写嵌套的“do…while”循环。在下面的示例中,上层“do…while”循环使用$i计数迭代,内部“do…while”循环递增$j,并且每次打印$i*j的乘积,从而打印从 1 到 10 的表格。
<?php $i=1; $j=1; do{ print "\n"; do{ $k = sprintf("%4u",$i*$j); print "$k"; $j++; } while ($j<=10); $j=1; $i++; } while ($i<=10); ?>
它将产生以下输出:
1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100