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
一个分页的论坛
Oct 09 PHP
php小型企业库存管理系统的设计与实现代码
May 16 PHP
PHP 第二节 数据类型之数值型
Apr 28 PHP
分享一个PHP数据流应用的简单例子
Jun 01 PHP
php小经验:解析preg_match与preg_match_all 函数
Jun 29 PHP
PHP实现在线阅读PDF文件的方法
Jun 23 PHP
php生成二维码
Aug 10 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
Feb 15 PHP
Redis使用Eval多个键值自增的操作实例
Nov 04 PHP
2017年最新PHP经典面试题目汇总(上篇)
Mar 17 PHP
PHP微信H5支付开发实例
Jul 25 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
如何判断php数组的维度
2013/06/10 PHP
php车辆违章查询数据示例
2016/10/14 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
php遍历目录下文件并按修改时间排序操作示例
2019/07/12 PHP
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
2010/01/05 Javascript
javascript操作cookie的文章(设置,删除cookies)
2010/04/01 Javascript
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
jquery获取当前点击对象的value方法
2014/02/28 Javascript
javascript实现树形菜单的方法
2015/07/17 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
2016/11/09 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
2016/11/26 Javascript
jQuery实现最简单实用的分秒倒计时
2017/02/05 Javascript
基于JavaScript实现复选框的全选和取消全选
2017/02/09 Javascript
JavaScript判断输入是否为数字类型的方法总结
2017/09/28 Javascript
Angular+ionic实现折叠展开效果的示例代码
2020/07/29 Javascript
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
Python SQLite3数据库操作类分享
2014/06/10 Python
Mac下Supervisor进程监控管理工具的安装与配置
2014/12/16 Python
初步讲解Python中的元组概念
2015/05/21 Python
python OpenCV学习笔记实现二维直方图
2018/02/08 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
python使用协程实现并发操作的方法详解
2019/12/27 Python
python实现mask矩阵示例(根据列表所给元素)
2020/07/30 Python
详解如何修改python中字典的键和值
2020/09/29 Python
定制别致的瑜伽垫:Sugarmat
2019/06/21 全球购物
室内设计专业个人的自我评价
2013/12/18 职场文书
大三预备党员入党思想汇报
2014/01/08 职场文书
便利店的创业计划书
2014/01/15 职场文书
购房委托书范本
2014/09/18 职场文书
红色故事汇观后感
2015/06/18 职场文书
推广普通话的宣传语
2015/07/13 职场文书
同学聚会感言一句话
2015/07/30 职场文书
毕业生求职自荐信(2016最新版)
2016/01/28 职场文书
详解python字符串驻留技术
2021/05/21 Python
关于EntityWrapper的in用法
2022/03/22 Java/Android
vue 给数组添加新对象并赋值
2022/04/20 Vue.js