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 相关文章推荐
在PHP3中实现SESSION的功能(一)
Oct 09 PHP
组合算法的PHP解答方法
Feb 04 PHP
PHP HTML JavaScript MySQL代码如何互相传值的方法分享
Sep 30 PHP
php获取通过http协议post提交过来xml数据及解析xml
Dec 16 PHP
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
Aug 25 PHP
PHP+MySQL修改记录的方法
Jan 21 PHP
PHP 获取ip地址代码汇总
Jul 05 PHP
PHP中的随机性 你觉得自己幸运吗?
Jan 22 PHP
thinkPHP显示不出验证码的原因与解决方法分析
May 20 PHP
PHP基于面向对象实现的留言本功能实例
Apr 04 PHP
thinkphp5引入公共部分header、footer的方法详解
Sep 14 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
Oct 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运行出现Notice : Use of undefined constant 的完美解决方案分享
2012/03/05 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
删除重复数据的算法
2006/11/23 Javascript
用javascript getComputedStyle获取和设置style的原理
2008/10/10 Javascript
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
ExtJs中简单的登录界面制作方法
2010/08/19 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
2014/10/19 Javascript
js获取当前日期前七天的方法
2015/02/28 Javascript
详解jquery事件delegate()的使用方法
2016/01/25 Javascript
浅谈js中StringBuffer类的实现方法及使用
2016/09/02 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
JS去除字符串中空格的方法
2017/02/14 Javascript
webpack打包js文件及部署的实现方法
2017/12/18 Javascript
浅谈基于Vue.js的移动组件库cube-ui
2017/12/20 Javascript
JavaScript的Object.defineProperty详解
2018/07/09 Javascript
微信小程序自定义导航栏实例代码
2019/04/05 Javascript
Vue-cli 移动端布局和动画使用详解
2020/08/10 Javascript
Nodejs 微信小程序消息推送的实现
2021/01/20 NodeJs
[41:20]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS DK
2014/05/26 DOTA
Python实现的几个常用排序算法实例
2014/06/16 Python
详解用python计算阶乘的几种方法
2019/08/14 Python
python 字符串的驻留机制及优缺点
2020/06/19 Python
CSS3轻松实现圆角效果
2017/11/09 HTML / CSS
详解移动端HTML5音频与视频问题及解决方案
2018/08/22 HTML / CSS
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
应届毕业生求职信范文分享
2013/12/26 职场文书
宿舍违规用电检讨书
2014/02/16 职场文书
陈安之励志演讲稿
2014/08/21 职场文书
公司业务员管理制度
2015/08/05 职场文书
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
python tqdm用法及实例详解
2021/06/16 Python
Java基础——Map集合
2022/04/01 Java/Android
Redis过期数据是否会被立马删除
2022/07/23 Redis
ubuntu端向日葵键盘输入卡顿问题及解决
2022/12/24 Servers