Home  >  Article  >  php教程  >  php for循环语句的几种用法分析

php for循环语句的几种用法分析

WBOY
WBOYOriginal
2016-06-13 10:48:421858browse

for 循环的语法是:

 

 代码如下 复制代码
for (expr1; expr2; expr3)
statement

下面说说for语句几种有用的变型。

1、无限循环

这种也叫死循环,没有开始和结束一直就这样下去


 

for (;;) {
 //放置需要不断执行的语句
}
?>
 


 

死循环如果在当中配合if else ,break也可以跳出循环

 代码如下 复制代码

for (;;) {
 //如果是公元2199年,则跳出循环 http://www.hzhuti.com/nokia/n93/
 if (date('Y') == '2199') {
  break;
 }
}
?>
 


 

2、使用空表达式

  接下来就是说说在初始化语句expr1中使用null语法,留空expr1最常见的作用就是完成更为复杂的初始化工作。

 代码如下 复制代码

if (isset($i)) {
 unset($i);
 if ((int) date('')   $i = 0;
 } else {
  $i = 1;
 }
} else {
 $i =3;
}

for (;$i  echo $i;
}
?>
 


 

  同样道理,迭代表达式expr3也可能留空,也可以利用这点编写更为复杂的迭代式,比如说根据不同的条件调用不同的迭代式。

  而for语句中的条件语句expr2留空则是上面所说的无限循环,当然也可以添加一些更为复杂的条件去判断什么时候跳出循环,在此不在重复。

3、多重循环

  使用多重循环来控制多个变量也是在for语句中使经常被忽略的一个特性。如下面的例子,在一般的任务中用到的一般会是双重循环,三重以上的循环一般意义不大。

for ($i = 0, $j = 10;$i  echo "$i + $j = 10rn";
}
?>
 


 

以上代码将输出:

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

如果我们要半路跳出循环怎么操作,实例

看下面这个多重循环嵌套的例子:

for($i = 1;$i for($j = 1;$j $m = $i * $i + $j * $j;
echo”$m n
”;
if($m 190) {
break 2;
}
}
}
 

break 2跳出了两重循环,你可以试验一眼,将2去掉,得到的结果是完全不一样的。如果不使用参数,跳出的只是本次循环,第一层循环会继续执行下去。

注:
break是被用在上面所提的各种循环和switch语句中的。他的作用是跳出当前的语法结构,执行下面的语句。break语句可以带一个参数n,表示跳出循环的层数,如果要跳出多重循环的话,可以用n来表示跳出的层数,如果不带参数默认是跳出本重循环。

 

4、更为复杂的表达式

如果把for语句的三个表达式写得复杂一些,则可以用于优化算法。甚至可以使用没有循环体的for语句来完成一些任务。比如计算累加或阶乘:

//计算1-5的累加结果,斌值到$j
for ($i = 1,$j = 0; $i echo $j;

//计算1-5的阶乘结果,斌值到$j
for ($i = 1,$j = 1; $i echo $j;

?>
 


 

如果我想执行到一个地方,自动调出当前循环执行一下-实例

for($i = 1;$i if($i % 3 == 0 || $i % 7 == 0){
continue;
}
}else{
echo”$i n
”;
}
}
?>
 
 

PHP的代码片段的作用是输出100以内,既不能被7整除又不能被3整除的那些自然数,循环中先用if条件语句判断那些能被整除的数,然后执行continue;语句,就直接进入了下个循环。不会执行下面的输出语句了。

注:

continue 是用来用在循环结构中,控制程序放弃本次循环continue语句之后的代码并转而进行下一次循环。continue本身并不跳出循环结构,只是放弃这一次循环。如果在非循环结构中(例如if语句中,switch语句中)使用continue,程序将会出错。

 

摘自  php开发
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn