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下将图片以二进制存入mysql数据库中并显示的实现代码
May 27 PHP
PHP 数组基础知识小结
Aug 20 PHP
与文件上传有关的php配置参数总结
Jun 14 PHP
destoon安装出现Internal Server Error的解决方法
Jun 21 PHP
php实现给图片加灰色半透明效果的方法
Oct 20 PHP
php之curl设置超时实例
Nov 03 PHP
PHP+MYSQL中文乱码问题
Jul 01 PHP
PHP闭包函数传参及使用外部变量的方法
Mar 15 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
Feb 15 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 PHP
workerman结合laravel开发在线聊天应用的示例代码
Oct 30 PHP
浅谈PHP封装CURL
Mar 06 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提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
2012/05/06 PHP
Ajax实现对静态页面的文章访问统计功能示例
2016/10/10 PHP
PHP框架自动加载类文件原理详解
2017/06/06 PHP
PHP常用函数之base64图片上传功能详解
2019/10/21 PHP
如何判断Javascript对象是否存在的简单实例
2016/05/18 Javascript
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
JS实现物体带缓冲的间歇运动效果示例
2016/12/22 Javascript
jquery实现左右轮播切换效果
2018/01/01 jQuery
layui table设置某一行的字体颜色方法
2019/09/05 Javascript
js模拟F11页面全屏显示
2019/09/17 Javascript
vue.js实现二级菜单效果
2019/10/19 Javascript
vue 子组件和父组件传值的示例
2020/09/11 Javascript
python常见的格式化输出小结
2016/12/15 Python
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
使用pycharm在本地开发并实时同步到服务器
2019/08/02 Python
pytorch实现onehot编码转为普通label标签
2020/01/02 Python
python统计文章中单词出现次数实例
2020/02/27 Python
python中shell执行知识点
2020/05/06 Python
详解Django中异步任务之django-celery
2020/11/05 Python
如何将Pycharm中调整字体大小的方式设置为&quot;ctrl+鼠标滚轮上下滑&quot;
2020/11/17 Python
CSS3弹性布局内容对齐(justify-content)属性使用详解
2017/07/31 HTML / CSS
美国领先的汽车轮胎和轮毂供应商:TireBuyer
2016/07/21 全球购物
戴森西班牙官网:Dyson西班牙
2020/02/04 全球购物
大专生自我鉴定范文
2013/10/01 职场文书
银行学习十八大感想
2014/01/11 职场文书
青年志愿者事迹材料
2014/02/07 职场文书
《胡杨》教学反思
2014/02/16 职场文书
倡议书格式
2014/04/14 职场文书
法院信息化建设方案
2014/05/21 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
电影地道战观后感
2015/06/04 职场文书
民主生活会意见
2015/06/05 职场文书
严以用权专题学习研讨会发言材料
2015/11/09 职场文书
2016年优秀共青团员事迹材料
2016/02/25 职场文书
Jupyter Notebook 如何修改字体和大小以及更改字体样式
2021/06/03 Python
学习nginx基础知识
2021/09/04 Servers