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&amp;mysql(三)
Oct 09 PHP
针对初学PHP者的疑难问答(1)
Oct 09 PHP
PHP 变量类型的强制转换
Oct 23 PHP
php 文件上传实例代码
Apr 19 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
Sep 25 PHP
php多用户读写文件冲突的解决办法
Nov 06 PHP
php使用unset()删除数组中某个单元(键)的方法
Feb 17 PHP
微信access_token的获取开发示例
Apr 16 PHP
php单例模式的简单实现方法
Jun 10 PHP
php 多文件上传的实现实例
Oct 23 PHP
PHP使用Session实现上传进度功能详解
Aug 06 PHP
php集成开发环境详解
Sep 24 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
使用JSON实现数据的跨域传输的php代码
2011/12/20 PHP
PHP弹出对话框技巧详细解读
2015/09/26 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
2020/08/17 PHP
变量在 PHP7 内部的实现(二)
2015/12/21 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
Yii2语言国际化自动配置详解
2018/08/22 PHP
PHP7 mongoDB扩展使用的方法分享
2019/05/02 PHP
jquery ready函数源代码研究
2009/12/06 Javascript
javascript模拟地球旋转效果代码实例
2013/12/02 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
2015/12/03 Javascript
JS获取当前页面名称的简单实例
2016/08/19 Javascript
JavaScript Base64 作为文件上传的实例代码解析
2017/02/14 Javascript
JS控件bootstrap datepicker使用方法详解
2017/03/25 Javascript
JS检测是否可以访问公网服务器功能代码
2017/06/19 Javascript
React 组件转 Vue 组件的命令写法
2018/02/28 Javascript
浅谈React 服务器端渲染的使用
2018/05/08 Javascript
css配合JavaScript实现tab标签切换效果
2018/10/11 Javascript
vue中get请求如何传递数组参数的方法示例
2019/11/08 Javascript
vue.js实现简单的计算器功能
2020/02/22 Javascript
JS Web Flex弹性盒子模型代码实例
2020/03/10 Javascript
初步认识Python中的列表与位运算符
2015/10/12 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
python 爬取古诗文存入mysql数据库的方法
2020/01/08 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
2020/04/21 Python
利用CSS3的transform做的动态时钟效果
2011/09/21 HTML / CSS
简单总结CSS3中视窗单位Viewport的常见用法
2016/02/04 HTML / CSS
html5定位获取当前位置并在百度地图上显示
2014/08/22 HTML / CSS
HTML5 source标签:媒介元素定义媒介资源
2018/01/29 HTML / CSS
Vivo俄罗斯官方在线商店:中国智能手机品牌
2019/10/04 全球购物
专业毕业生个性的自我评价
2013/10/03 职场文书
2014学年自我鉴定
2014/02/23 职场文书
2014年班组工作总结
2014/11/20 职场文书
乔迁之喜答谢词
2015/01/05 职场文书
python数字图像处理:图像简单滤波
2022/06/28 Python