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函数之子字符串替换&amp;#65279; str_replace
Mar 23 PHP
php页面缓存ob系列函数介绍
Oct 18 PHP
关于Iframe如何跨域访问Cookie和Session的解决方法
Apr 15 PHP
php目录操作实例代码
Feb 21 PHP
php解决约瑟夫环示例
Apr 09 PHP
ThinkPHP CURD方法之data方法详解
Jun 18 PHP
PHP对象相互引用的内存溢出实例分析
Aug 28 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
Oct 15 PHP
PHP中for循环与foreach的区别
Mar 06 PHP
Yii2 批量插入、更新数据实例
Mar 15 PHP
php微信分享到朋友圈、QQ、朋友、微博
Feb 18 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
Oct 16 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
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
DC游戏Steam周三特惠 《蝙蝠侠》阿卡姆系列平史低
2020/04/09 欧美动漫
浅析PHP中的字符串编码转换(自动识别原编码)
2013/07/02 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
2014/04/21 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
JavaScript 快捷键设置实现代码
2009/03/13 Javascript
JS中的substring和substr函数的区别说明
2013/05/07 Javascript
JS数字抽奖游戏实现方法
2015/05/04 Javascript
基于jQuery实现美观且实用的倒计时实例代码
2015/12/30 Javascript
javascript创建cookie、读取cookie
2016/03/31 Javascript
js检测离开或刷新页面时表单数据是否更改的方法
2016/08/02 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
详解使用vscode+es6写nodejs服务端调试配置
2017/09/21 NodeJs
深入理解Vue.js源码之事件机制
2017/09/27 Javascript
vue+elementUi 实现密码显示/隐藏+小图标变化功能
2020/01/18 Javascript
three.js欧拉角和四元数的使用方法
2020/07/26 Javascript
vue3.0中使用element的完整步骤
2021/03/04 Vue.js
python基础教程之自定义函数介绍
2014/08/29 Python
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
numpy求平均值的维度设定的例子
2019/08/24 Python
Python3 使用pillow库生成随机验证码
2019/08/26 Python
Python开发之基于模板匹配的信用卡数字识别功能
2020/01/13 Python
windows下Pycharm安装opencv的多种方法
2020/03/05 Python
Python 实现一行输入多个数字(用空格隔开)
2020/04/29 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
使用css3匹配手机屏幕横竖状态
2014/01/27 HTML / CSS
HTML5的download属性详细介绍和使用实例
2014/04/23 HTML / CSS
英国独特家具和家庭用品购物网站:Cuckooland
2020/08/30 全球购物
幼儿园教师备课制度
2014/01/12 职场文书
党员干部承诺书范文
2014/03/25 职场文书
护士求职信范文
2014/05/24 职场文书
大学生村官个人对照检查材料(群众路线)
2014/09/26 职场文书
住房抵押登记委托书
2014/09/27 职场文书
2015年打非治违工作总结
2015/04/02 职场文书
python cv2图像质量压缩的算法示例
2021/06/04 Python
使用Python拟合函数曲线
2022/04/14 Python