几种有用的变型 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和ACCESS写聊天室(一)
Oct 09 PHP
第十五节--Zend引擎的发展
Nov 16 PHP
php 多关键字 高亮显示实现代码
Apr 23 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
Feb 16 PHP
基于php使用memcache存储session的详解
Jun 25 PHP
推荐一本PHP程序猿都应该拜读的书
Dec 31 PHP
php+mysqli使用面向对象方式更新数据库实例
Jan 29 PHP
php实现将数组转换为XML的方法
Mar 09 PHP
composer.lock文件的作用
Feb 03 PHP
ThinkPHP中where()使用方法详解
Apr 19 PHP
php调用自己java程序的方法详解
May 13 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 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
Destoon实现多表查询示例
2014/08/21 PHP
php去除头尾空格的2种方法
2015/03/16 PHP
两种php实现图片上传的方法
2016/01/22 PHP
[原创]PHP字符串中插入子字符串方法总结
2016/05/06 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
php5.x禁用eval的操作方法
2018/10/19 PHP
ImageFlow可鼠标控制图片滚动
2008/01/30 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
2014/06/22 Javascript
Javascript数据结构与算法之列表详解
2015/03/12 Javascript
jQuery带进度条全屏图片轮播特效代码分享
2020/06/28 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
详解vue-admin和后端(flask)分离结合的例子
2018/02/12 Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
2019/09/07 Javascript
vue+springboot图片上传和显示的示例代码
2020/02/14 Javascript
python中numpy基础学习及进行数组和矢量计算
2017/02/12 Python
python实现mysql的读写分离及负载均衡
2018/02/04 Python
python 读取文本文件的行数据,文件.splitlines()的方法
2018/07/12 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
2020/01/06 Python
django rest framework serializers序列化实例
2020/05/13 Python
Python logging模块异步线程写日志实现过程解析
2020/06/30 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
美国体育用品在线:Modell’s Sporting Goods
2018/06/07 全球购物
Brydge英国:适用于Apple iPad和Microsoft Surface Pro的蓝牙键盘
2019/05/16 全球购物
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
狼和鹿教学反思
2014/02/05 职场文书
学校教师安全责任书
2014/07/23 职场文书
扬州个园导游词
2015/02/06 职场文书
国庆节慰问信
2015/02/15 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
2016年教师党员创先争优承诺书
2016/03/24 职场文书
《攀登者》:“海拔8000米以上,你不能指望任何人”
2019/11/25 职场文书
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
2021/03/29 PHP
PHP解决高并发问题
2021/04/01 PHP
Pytest allure 命令行参数的使用
2021/04/18 Python
vue3引入highlight.js进行代码高亮的方法实例
2022/04/08 Vue.js