几种有用的变型 PHP中循环语句的用法介绍


Posted in PHP onJanuary 30, 2012

PHP手册中对它的语法定义如下:

for (expr1; expr2; expr3)

statement

下面说说for语句几种有用的变型。

1、无限循环

首先是人尽皆知的无限循环(亦可称"死循环")。由于空表达式null在语法上是有效的,所以我们可以把for语句的三个表达式留空,这样就会产生不断执行for嵌套语句的效果。

for (;;) {

//放置需要不断执行的语句

}

?>

虽然有一些任务会使用到无限循环,但是大多数程序任务,特别是PHP所能涉及的领域,在使用无限循环时都会添加一些终止循环的条件。

for (;;) {

//如果是公元2199年,则跳出循环

if (date('Y') == '2199') {

break;

}

}

?>

2、使用空表达式

接下来就是说说在初始化语句expr1中使用null语法,留空expr1最常见的作用就是完成更为复杂的初始化工作。

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学习笔记之面向对象编程
Dec 29 PHP
php和js如何通过json互相传递数据相关问题探讨
Feb 26 PHP
php遍历目录与文件夹的多种方法详解
Nov 14 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
Feb 18 PHP
php实现的css文件背景图片下载器代码
Nov 11 PHP
PHP实现HTTP断点续传的方法
Jun 17 PHP
yii添删改查实例
Nov 16 PHP
Symfony2安装的方法(2种方法)
Feb 04 PHP
Laravel与CI框架中截取字符串函数
May 08 PHP
laravel学习教程之关联模型
Jul 30 PHP
thinkPHP商城公告功能开发问题分析
Dec 01 PHP
yii2.0整合阿里云oss删除单个文件的方法
Sep 19 PHP
通过PHP修改Linux或Unix口令的方法分享
Jan 30 #PHP
php代码收集表单内容并写入文件的代码
Jan 29 #PHP
php 无法加载mysql的module的时候的配置的解决方案引发的思考
Jan 27 #PHP
php木马webshell扫描器代码
Jan 25 #PHP
php addslashes及其他清除空格的方法是不安全的
Jan 25 #PHP
PHP中创建空文件的代码[file_put_contents vs touch]
Jan 20 #PHP
php中将数组存到文件里的实现代码
Jan 19 #PHP
You might like
php用数组返回无限分类的列表数据的代码
2010/08/08 PHP
PHP之数组学习
2011/05/29 PHP
解析php file_exists无效的解决办法
2013/06/26 PHP
解析PHP 5.5 新特性
2013/07/02 PHP
Linux下安装PHP MSSQL扩展教程
2014/10/24 PHP
php导入模块文件分享
2015/03/17 PHP
PHP文件读取功能的应用实例
2015/05/08 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
PHP正则获取页面所有图片地址
2016/03/23 PHP
PHP屏蔽关键字实现方法
2016/11/17 PHP
php操作access数据库的方法详解
2017/02/22 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
CSS+JS构建的图片查看器
2006/07/22 Javascript
Javascript Cookie读写删除操作的函数
2010/03/02 Javascript
利用jquery写的左右轮播图特效
2014/02/12 Javascript
JavaScript开发人员的10个关键习惯小结
2014/12/05 Javascript
JavaScript实现数据类型的相互转换
2016/03/06 Javascript
标准的js无缝滚动效果
2016/08/30 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
用javascript获取任意颜色的更亮或更暗颜色值示例代码
2017/07/21 Javascript
微信小程序 高德地图路线规划实现过程详解
2019/08/05 Javascript
VUE项目实现主题切换的多种方法
2020/11/26 Vue.js
Python类的继承和多态代码详解
2017/12/27 Python
小白如何入门Python? 制作一个网站为例
2018/03/06 Python
python增加矩阵维度的实例讲解
2018/04/04 Python
Python实现八皇后问题示例代码
2018/12/09 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
2020/05/27 Python
python保留格式汇总各部门excel内容的实现思路
2020/06/01 Python
Python中关于logging模块的学习笔记
2020/06/03 Python
html5使用canvas绘制一张图片
2014/12/15 HTML / CSS
享誉全球的多元化时尚精品购物平台:Farfetch发发奇(支持中文)
2017/08/08 全球购物
《春笋》教学反思
2014/04/15 职场文书
考察现实表现材料
2014/05/19 职场文书
设立有限责任公司出资协议书
2014/11/01 职场文书
Spring Boot 的创建和运行示例代码详解
2022/07/23 Java/Android