PHP中for循环语句的几种变型

yipeiwu_com6年前PHP代码库
PHP中for循环语句的几种变型

  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
;
}
?>

 ⊥览恚泶锸絜xpr3也可能留空,也可以利用这点编写更为复杂的迭代式,比如说根据不同的条件调用不同的迭代式。

  而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循环语句就是一个典型的例子。

 

关于作者:

lm92是PHP中文文档小组成员之一:刘铭,今年夏天高中毕业,现在广东某高校上大学

他的blog http://blog.donews.com/phpor/

相关文章

php面向对象程序设计中self与static的区别分析

本文实例讲述了php面向对象程序设计中self与static的区别。分享给大家供大家参考,具体如下: 1、假设我们有个Car类,它有2个方法:model()和getModel()。...

安装apache2.2.22配置php5.4(具体操作步骤)

修改 apache2.2/httpd.conf 配置文件,让apache能够解析php文件 #修改监听端口Listen 8011 #在LoadModule的最后一段后面添加下面一句话Lo...

PHP从FLV文件获取视频预览图的方法

本文实例讲述了PHP从FLV文件获取视频预览图的方法。分享给大家供大家参考。具体实现方法如下: 复制代码 代码如下:<?php // references http://w...

PHP安全性漫谈

PHP安全性漫谈

一、apache server安全性设置 1、以Nobody用户运行 一般情况下,Apache是由Root 来安装和运行的。如果Apache Server进程具有Root用户特权,那么它...

iis6手工创建网站后无法运行php脚本的解决方法

iis6手工创建网站后无法运行php脚本的解决方法

给人搬了十几个网站,老站用西部数码建站助手创建的,现在过期了无法继续创建,只能在Internet 信息服务(IIS)管理器创建网站,创建下来都没问题,但是就是无法打开网站。 测试打开tx...