在 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,程序將會出錯.
新聞熱點
疑難解答