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 相关文章推荐
dede全站URL静态化改造[070414更正]
Apr 17 PHP
PHP 配置文件中open_basedir选项作用
Jul 19 PHP
PHP fgetcsv 定义和用法(附windows与linux下兼容问题)
May 29 PHP
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
Nov 01 PHP
深入php define()函数以及defined()函数的用法详解
Jun 05 PHP
PHP内核探索:变量概述
Jan 30 PHP
分享一个超好用的php header下载函数
Jan 31 PHP
PHP常用文件操作函数和简单实例分析
Jun 03 PHP
PHP加密解密类实例代码
Jul 20 PHP
php中bind_param()函数用法分析
Mar 28 PHP
老生常谈PHP 文件写入和读取(必看篇)
May 22 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 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
用mysql内存表来代替php session的类
2009/02/01 PHP
php数组的一些常见操作汇总
2011/07/17 PHP
基于PHP服务端图片生成缩略图的方法详解
2013/06/20 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
JQuery从头学起第三讲
2010/07/06 Javascript
Javascript实现关联数据(Linked Data)查询及注意细节
2013/02/22 Javascript
Javascript计算两个marker之间的距离(Google Map V3)
2013/04/26 Javascript
JavaScript两种跨域技术全面介绍
2014/04/16 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
2015/06/19 Javascript
jQuery进行组件开发完整实例
2015/12/15 Javascript
javascript动态获取登录时间和在线时长
2016/02/25 Javascript
DIV+CSS+jQ实现省市联动可扩展
2016/06/22 Javascript
js鼠标跟随运动效果
2017/03/11 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
2017/10/19 Javascript
如何编写一个完整的Angular4 FormText 组件
2017/11/18 Javascript
angularjs实现table增加tr的方法
2018/02/27 Javascript
js+css实现打字效果
2020/06/24 Javascript
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
使用js实现将后台传入的json数据放在前台显示
2018/08/06 Javascript
jQuery实现ajax的嵌套请求案例分析
2019/02/16 jQuery
Vue分页器实现原理详解
2019/06/28 Javascript
微信小程序入门之绘制时钟
2020/10/22 Javascript
[42:11]TNC vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[36:45]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
跟老齐学Python之玩转字符串(3)
2014/09/14 Python
python分布式编程实现过程解析
2019/11/08 Python
tensorflow estimator 使用hook实现finetune方式
2020/01/21 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
2020/03/23 Python
Mac PyCharm中的.gitignore 安装设置教程
2020/04/16 Python
pandas to_excel 添加颜色操作
2020/07/14 Python
AmazeUI中模态框的实现
2020/08/19 HTML / CSS
德国净水壶和滤芯品牌:波尔德PearlCo(家用净水器)
2020/04/29 全球购物
CSS代码检查工具stylelint的使用方法详解
2021/03/27 HTML / CSS
运动会广播稿150字(9篇)
2014/09/20 职场文书
法律意见书范本
2015/06/04 职场文书
python ansible自动化运维工具执行流程
2021/06/24 Python