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 采集获取指定网址的内容
Jan 05 PHP
PHP自定义函数收代码
Aug 01 PHP
再推荐十款免费的php开发工具
Nov 09 PHP
thinkPHP中多维数组的遍历方法
Jan 09 PHP
详解js异步文件加载器
Jan 24 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
Mar 17 PHP
Yii2 rbac权限控制之菜单menu实例教程
Apr 28 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
Jun 13 PHP
PHP Cookie学习笔记
Aug 23 PHP
php获取今日开始时间和结束时间的方法
Feb 27 PHP
PHP设计模式之注册树模式分析
Jan 26 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
Smarty Foreach 使用说明
2010/03/23 PHP
php xml 入门学习资料
2011/01/01 PHP
thinkphp四种url访问方式详解
2014/11/28 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
2019/03/29 PHP
JavaScript CSS 修改学习第四章 透明度设置
2010/02/19 Javascript
jquery 得到当前页面高度和宽度的两个函数
2010/02/21 Javascript
js压缩工具 yuicompressor 使用教程
2010/03/31 Javascript
JS中实现replaceAll的方法(实例代码)
2013/11/12 Javascript
浅谈jQuery事件绑定原理
2015/01/02 Javascript
AngularJS学习笔记之ng-options指令
2015/06/16 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
2015/09/30 Javascript
jquery实现触发时更新下拉列表内容的方法
2015/12/02 Javascript
vue组件实例解析
2017/01/10 Javascript
bootstrap suggest下拉框使用详解
2017/04/10 Javascript
详解vue挂载到dom上会发生什么
2019/01/20 Javascript
详解Vue中的watch和computed
2020/11/09 Javascript
[47:35]VP vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
python实现RSA加密(解密)算法
2016/02/17 Python
Python机器学习logistic回归代码解析
2018/01/17 Python
基于pycharm导入模块显示不存在的解决方法
2018/10/13 Python
使用django-guardian实现django-admin的行级权限控制的方法
2018/10/30 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
2020/09/18 Python
Canvas波浪花环的示例代码
2020/08/21 HTML / CSS
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
JAVA软件工程师测试题
2014/07/25 面试题
夜大毕业生自我鉴定
2013/10/31 职场文书
八一建军节活动方案
2014/02/10 职场文书
银行贷款承诺书
2014/03/29 职场文书
合作协议书范本
2014/04/17 职场文书
民族精神月活动总结
2014/08/28 职场文书
国家助学贷款承诺书
2015/04/30 职场文书
党员证明信
2015/06/19 职场文书
暑期家教宣传单
2015/07/14 职场文书
python opencv旋转图片的使用方法
2021/06/04 Python
Redis命令处理过程源码解析
2022/02/12 Redis