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 不错的学习资料
Feb 06 PHP
PHP nl2br函数 将换行字符转成 &amp;lt;br&amp;gt;
Aug 21 PHP
php下把数组保存为文件格式的实例应用
Feb 08 PHP
php中eval函数的危害与正确禁用方法
Jun 30 PHP
完善CodeIgniter在IDE中代码提示功能的方法
Jul 19 PHP
PHP实现仿Google分页效果的分页函数
Jul 29 PHP
php开发微信支付获取用户地址
Oct 04 PHP
PHP通过反射动态加载第三方类和获得类源码的实例
Nov 27 PHP
PHP数据库操作Helper类完整实例
May 11 PHP
详谈PHP面向对象中常用的关键字和魔术方法
Feb 04 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
PHP使用HTML5 FileApi实现Ajax上传文件功能示例
Jul 01 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
ThinkPHP3.1的Widget新用法
2014/06/19 PHP
php curl登陆qq后获取用户信息时证书错误
2015/02/03 PHP
PHP创建word文档的方法(平台无关)
2016/03/29 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
PHP设计模式之简单工厂和工厂模式实例分析
2019/03/25 PHP
js给页面加style无效果的解决方法
2014/01/20 Javascript
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
node.js中的buffer.slice方法使用说明
2014/12/10 Javascript
jQuery中offset()方法用法实例
2015/01/16 Javascript
JS中prototype的用法实例分析
2015/03/19 Javascript
JavaScript——DOM操作——Window.document对象详解
2016/07/14 Javascript
JS 拼凑字符串的简单实例
2016/09/02 Javascript
零基础轻松学JavaScript闭包
2016/12/30 Javascript
详解Chai.js断言库API中文文档
2018/01/31 Javascript
如何利用@angular/cli V6.0直接开发PWA应用详解
2018/05/06 Javascript
JS中call和apply函数用法实例分析
2018/06/20 Javascript
JS执行控制之节流模式实例分析
2018/12/21 Javascript
JavaScript基于面向对象实现的无缝滚动轮播示例
2020/01/17 Javascript
小程序接入腾讯位置服务的详细流程
2020/03/03 Javascript
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
[02:23]2018DOTA2亚洲邀请赛趣味视频——反应测试
2018/04/04 DOTA
Django的信号机制详解
2017/05/05 Python
python-OpenCV 实现将数组转换成灰度图和彩图
2020/01/09 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
2020/10/31 Python
网络技术专业求职信
2014/05/02 职场文书
篮球比赛口号
2014/06/10 职场文书
常住证明范本
2015/06/23 职场文书
公司员工宿舍管理制度
2015/08/03 职场文书
《我是什么》教学反思
2016/02/16 职场文书
HTML5来实现本地文件读取和写入的实现方法
2021/05/25 HTML / CSS
MYSQL(电话号码,身份证)数据脱敏的实现
2021/05/28 MySQL
Python基于百度AI实现抓取表情包
2021/06/27 Python
Python使用MapReduce进行简单的销售统计
2022/04/22 Python
Tomcat安装使用及部署Web项目的3种方法汇总
2022/08/14 Servers
Elasticsearch6.2服务器升配后的bug(避坑指南)
2022/09/23 Servers