PHP中for循环语句的几种变型


Posted in PHP onNovember 26, 2006

for语句可以说是PHP(同时也是多种语言)的循环控制部份最基本的一个语句了,for语句的执行规律和基础用法在这里就不多说,可以参见PHP手册for语句部分。PHP手册中对它的语法定义如下:

for (expr1; expr2; expr3)
statement

下面说说for语句几种有用的变型。

1、无限循环

首先是人尽皆知的无限循环(亦可称“死循环”)。由于空表达式null在语法上是有效的,所以我们可以把for语句的三个表达式留空,这样就会产生不断执行for嵌套语句的效果。

<?php
for (;;) {
    
//放置需要不断执行的语句
}
?>

虽然有一些任务会使用到无限循环,但是大多数程序任务,特别是PHP所能涉及的领域,在使用无限循环时都会添加一些终止循环的条件。

<?php
for (;;) {
    
//如果是公元2199年,则跳出循环
    
if (date('Y') == '2199') {
        break;
    }
}
?>

2、使用空表达式

接下来就是说说在初始化语句expr1中使用null语法,留空expr1最常见的作用就是完成更为复杂的初始化工作。

<?php
if (isset($i)) {
    unset(
$i);
    if ((int) 
date('') < 2008) {
        
$i 0;
    } else {
        
$i 1;
    }
} else {
    
$i =3;
}

for (;$i 10;$i++) {
    echo 
$i;
}
?>

同样道理,迭代表达式expr3也可能留空,也可以利用这点编写更为复杂的迭代式,比如说根据不同的条件调用不同的迭代式。

而for语句中的条件语句expr2留空则是上面所说的无限循环,当然也可以添加一些更为复杂的条件去判断什么时候跳出循环,在此不在重复。

3、多重循环

使用多重循环来控制多个变量也是在for语句中使经常被忽略的一个特性。如下面的例子,在一般的任务中用到的一般会是双重循环,三重以上的循环一般意义不大。

<?php
for ($i 0$j 10;$i <= 10;$i++, $j--) {
    echo 
"$i + $j = 10\r\n";
}
?>

以上代码将输出:
0 + 10 = 10
1 + 9 = 10
2 + 8 = 10
3 + 7 = 10
4 + 6 = 10
5 + 5 = 10
6 + 4 = 10
7 + 3 = 10
8 + 2 = 10
9 + 1 = 10
10 + 0 = 10

4、更为复杂的表达式

如果把for语句的三个表达式写得复杂一些,则可以用于优化算法。甚至可以使用没有循环体的for语句来完成一些任务。比如计算累加或阶乘:

<?php
//计算1-5的累加结果,斌值到$j
for ($i 1,$j 0$i <= 5;$j += $i++);
echo 
$j;

//计算1-5的阶乘结果,斌值到$j
for ($i 1,$j 1$i <= 5;$j *= $i++);
echo 
$j;

?>

PHP借助了C语言的语法,一定程度上也会拥有C的特性,比如说强大的for循环语句就是一个典型的例子。

PHP 相关文章推荐
PHP个人网站架设连环讲(一)
Oct 09 PHP
PHP中通过ADO调用Access数据库的方法测试不通过
Dec 31 PHP
php 删除cookie和浏览器重定向
Mar 16 PHP
php 全局变量范围分析
Aug 07 PHP
PHP冒泡排序算法代码详细解读
Jul 17 PHP
PHP下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
Sep 19 PHP
PHP Hash算法:Times33算法代码实例
May 13 PHP
一个简单的php路由类
May 29 PHP
详解如何在云服务器上部署Laravel
Jun 30 PHP
php操作redis数据库常见方法实例总结
Feb 20 PHP
ThinkPHP5框架中使用JWT的方法示例
Jun 03 PHP
Yii中特殊行为ActionFilter的使用方法示例
Oct 18 PHP
用PHP中的 == 运算符进行字符串比较
Nov 26 #PHP
PHP图片上传类带图片显示
Nov 25 #PHP
整合了前面的PHP数据库连接类~~做成一个分页类!
Nov 25 #PHP
PHP面向对象的使用教程 简单数据库连接
Nov 25 #PHP
xajax写的留言本
Nov 25 #PHP
SSI指令
Nov 25 #PHP
配置支持SSI
Nov 25 #PHP
You might like
教你IIS6的PHP最佳配置方法
2006/09/05 PHP
用PHP将数据导入到Foxmail
2006/10/09 PHP
php访问数组最后一个元素的函数end()用法
2015/03/18 PHP
Symfony2中被遗弃的getRequest()方法分析
2016/03/17 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
2018/04/30 PHP
Swoole4.4协程抢占式调度器详解
2019/05/23 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
用javascript实现改变TEXTAREA滚动条和按钮的颜色,以及怎样让滚动条变得扁平
2007/04/20 Javascript
jQuery中的.bind()、.live()和.delegate()之间区别分析
2011/06/08 Javascript
自己编写的支持Ajax验证的JS表单验证插件
2015/05/15 Javascript
jQuery焦点图切换特效代码分享
2015/09/15 Javascript
Bootstrap布局组件应用实例讲解
2016/02/17 Javascript
浅谈Node.js:Buffer模块
2016/12/05 Javascript
javascript容错处理代码(屏蔽js错误)
2017/01/20 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
electron demo项目npm install安装失败的解决方法
2018/02/06 Javascript
Node.js搭建WEB服务器的示例代码
2018/08/15 Javascript
解决vue 项目引入字体图标报错、不显示等问题
2018/09/01 Javascript
浅谈angularJs函数的使用方法(大小写转换,拷贝,扩充对象)
2018/10/08 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
2018/12/18 Javascript
茶余饭后聊聊Vue3.0响应式数据那些事儿
2019/10/30 Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
2019/12/04 Javascript
微信小程序实现列表的横向滑动方式
2020/07/15 Javascript
解决vue的router组件component在import时不能使用变量问题
2020/07/26 Javascript
Gauss-Seidel迭代算法的Python实现详解
2019/06/29 Python
python检查目录文件权限并修改目录文件权限的操作
2020/03/11 Python
Python3.9.1中使用split()的处理方法(推荐)
2021/02/07 Python
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
莫斯科大型旅游休闲商品超市:Camping.ru
2020/09/16 全球购物
大学生村官工作感言
2014/01/10 职场文书
教师作风整改措施思想汇报
2014/10/12 职场文书
2014年协会工作总结
2014/11/22 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书
五星红旗迎风飘扬观后感
2015/06/17 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书
virtualenv隔离Python环境的问题解析
2022/06/21 Python