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编程中字符串处理的5个技巧小结
Nov 13 PHP
php 仿Comsenz安装效果代码打包提供下载
May 09 PHP
php下批量挂马和批量清马代码
Feb 27 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
Mar 18 PHP
laravel安装zend opcache加速器教程
Mar 02 PHP
详解WordPress开发中wp_title()函数的用法
Jan 07 PHP
PHP浮点数的一个常见问题
Mar 10 PHP
Joomla使用Apache重写模式的方法
May 04 PHP
PHP开发实现微信退款功能示例
Nov 25 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
Feb 15 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
Jul 26 PHP
关于PHP5.6+版本“No input file specified”问题的解决
Dec 11 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中的时间显示
2007/01/18 PHP
PHP类的使用 实例代码讲解
2009/12/28 PHP
PHP常用字符串函数用法实例总结
2020/06/04 PHP
比较简单的异步加载JS文件的代码
2009/07/18 Javascript
jQuery 源码分析笔记(7) Queue
2011/06/19 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
深入理解javascript原型链和继承
2014/09/23 Javascript
js简单抽奖代码
2015/01/16 Javascript
jQuery插件Elastislide实现响应式的焦点图无缝滚动切换特效
2015/04/12 Javascript
如何让一个json文件显示在表格里【实现代码】
2016/05/09 Javascript
Bootstrap按钮下拉菜单组件详解
2016/05/10 Javascript
需灵活掌握的Bootstrap预定义排版类 你精通吗?
2016/06/20 Javascript
JS自定义函数对web前端上传的文件进行类型大小判断
2016/10/19 Javascript
基于MVC方式实现三级联动(JavaScript)
2017/01/23 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
基于JavaScript实现的插入排序算法分析
2017/04/14 Javascript
使用AngularJS对表单提交内容进行验证的操作方法
2017/07/12 Javascript
浅谈关于axios和session的一些事
2017/07/13 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
nodejs实现截取上传视频中一帧作为预览图片
2017/12/10 NodeJs
vue渲染时闪烁{{}}的问题及解决方法
2018/03/28 Javascript
JavaScript函数重载操作实例浅析
2020/05/02 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
Python 网络编程起步(Socket发送消息)
2008/09/06 Python
python实现的解析crontab配置文件代码
2014/06/30 Python
python访问系统环境变量的方法
2015/04/29 Python
详解Python循环作用域与闭包
2019/03/21 Python
基于TensorBoard中graph模块图结构分析
2020/02/15 Python
Python 防止死锁的方法
2020/07/29 Python
安全生产管理合理化建议书
2014/03/12 职场文书
食品业务员岗位职责
2014/03/18 职场文书
红色旅游心得体会
2014/09/03 职场文书
保密工作整改报告
2014/11/06 职场文书
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
2021/04/01 PHP
pytorch通过训练结果的复现设置随机种子
2021/06/01 Python