萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php for循環語句的幾種用法分析

php for循環語句的幾種用法分析

在 php中for 循環是 PHP 中最復雜的循環結構。它的行為和 C 語言的相似,也是最基本的循環語句了,在開發中也是必不可少的,有需要了解的朋友可以看看。

for 循環的語法是:

 

 代碼如下 復制代碼 for (expr1; expr2; expr3)
statement

下面說說for語句幾種有用的變型。

1、無限循環

這種也叫死循環,沒有開始和結束一直就這樣下去

 代碼如下 復制代碼

<?php
for (;;) {
 //放置需要不斷執行的語句
}
?>

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

 代碼如下 復制代碼

<?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 = 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 <= 10; $i++ ){
for($j = 1;$j <= 10;$j++){
$m = $i * $i + $j * $j;
echo”$m n<br/>”;
if($m < 90 || $m > 190) {
break 2;
}
}
}

break 2跳出了兩重循環,你可以試驗一眼,將2去掉,得到的結果是完全不一樣的。如果不使用參數,跳出的只是本次循環,第一層循環會繼續執行下去。

注:
break是被用在上面所提的各種循環和switch語句中的。他的作用是跳出當前的語法結構,執行下面的語句。break語句可以帶一個參數n,表示跳出循環的層數,如果要跳出多重循環的話,可以用n來表示跳出的層數,如果不帶參數默認是跳出本重循環。

 

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
for($i = 1;$i <= 100; $i++ ){
if($i % 3 == 0 || $i % 7 == 0){
continue;
}
}else{
echo”$i n<br/>”;
}
}
?>

PHP的代碼片段的作用是輸出100以內,既不能被7整除又不能被3整除的那些自然數,循環中先用if條件語句判斷那些能被整除的數,然後執行continue;語句,就直接進入了下個循環。不會執行下面的輸出語句了。

注:

continue 是用來用在循環結構中,控制程序放棄本次循環continue語句之後的代碼並轉而進行下一次循環。continue本身並不跳出循環結構,只是放棄這一次循環。如果在非循環結構中(例如if語句中,switch語句中)使用continue,程序將會出錯。

copyright © 萬盛學電腦網 all rights reserved