PHP開(kāi)發(fā)基礎(chǔ)教學(xué)循環(huán)語(yǔ)句
一、PHP循環(huán)
當(dāng)我們寫(xiě)程式碼時(shí),經(jīng)常需要讓相同的程式碼區(qū)塊一次又一次地重複運(yùn)行。這時(shí)候我們就可以在程式碼中使用循環(huán)語(yǔ)句來(lái)完成這個(gè)任務(wù)。
在PHP 中,提供了下列迴圈語(yǔ)句:
while?- 只要指定的條件成立,則迴圈執(zhí)行程式碼區(qū)塊
do...while?- 首先執(zhí)行一次程式碼區(qū)塊,然後在指定的條件成立時(shí)重複這個(gè)迴圈
for?- 迴圈執(zhí)行程式碼區(qū)塊指定的次數(shù)
foreach?- 根據(jù)陣列中每個(gè)元素來(lái)循環(huán)程式碼區(qū)塊
#二、while迴圈
while 迴圈會(huì)重複執(zhí)行程式碼區(qū)塊,直到指定的條件不成立
語(yǔ)法:
while (條件)
{
要執(zhí)行的程式碼;
}
我們來(lái)透過(guò)一個(gè)程式碼邏輯圖,認(rèn)識(shí)while迴圈
先判斷條件是否滿足,滿足的話,一直執(zhí)行大括號(hào)裡面的程式碼,直到條件不滿足時(shí),跳出
實(shí)例1迴圈輸出1到50內(nèi)的整數(shù) :原始碼如下
<?php $i=1; while($i<=50){ echo $i." "; $i++; } ?>
實(shí)例2:輸出一個(gè)1到100的表格,實(shí)作隔行變色功能
首先輸出整個(gè)表格:原始碼如下
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php //定義循環(huán)的初始值 $i=0; //輸出表格 echo '<table width="800" border="1" >';//雙引號(hào)外面要套單引號(hào),雙引號(hào)會(huì)報(bào)錯(cuò) while($i<100){ //0 - 9 為一行 //10 -19 為一行 //因此,每一行的開(kāi)始都能夠被10求余后為零,如為10的時(shí)候,應(yīng)該顯示行開(kāi)始的標(biāo)簽 if($i%10==0){ //為了隔行變色,第2,4,6每行的顏色變過(guò)色的,因此我們又可以再進(jìn)行一次取余運(yùn)算 if($i%20==0){ //第1,3,5等行正常輸出 echo "<tr>"; }else{ //第2,4,6等行正常輸出 echo '<tr bgcolor="pink">';//雙引號(hào)外面要套單引號(hào),雙引號(hào)會(huì)報(bào)錯(cuò) } } echo "<td>"; echo $i; echo "</td>"; $i++; //同理,每一行結(jié)束是不是應(yīng)該有一個(gè)</tr>結(jié)束標(biāo)簽?zāi)兀? if($i%10==0){ echo "</tr>"; } } echo "</table>"; ?> </body> </html>
註:表格部分只是請(qǐng)參考HTML課程的相關(guān)部分
註:語(yǔ)句裡面,雙引號(hào)裡面要套單引號(hào),單引號(hào)裡面套雙引號(hào)
三、do...while循環(huán)
#語(yǔ)法:do
{
要執(zhí)行的程式碼;
}
while (條件);
l?do...while 語(yǔ)句會(huì)至少執(zhí)行一次程式碼,然後檢查條件,只要條件成立,就會(huì)重複進(jìn)行迴圈
l?do ...while與while的區(qū)別是,它們的值的檢查時(shí)機(jī)不同。
l?do-while 不論while判斷是否成立,先執(zhí)行一次程式碼區(qū)塊循環(huán)語(yǔ)句,保證會(huì)執(zhí)行一次(表達(dá)式的真值在每次迴圈結(jié)束後檢查)。
然而我們之前的while迴圈會(huì)檢查布林判斷區(qū)域,成立則執(zhí)行。不成立則不執(zhí)行。
<?php $i = 0; do { echo $i; } while ($i > 0); ?>
上面程式碼中,$i 肯定不大於0,也執(zhí)行了。
當(dāng)然,你還不能理解,實(shí)在想不到應(yīng)用程式場(chǎng)景也沒(méi)關(guān)係,可以完全跳過(guò)此區(qū)塊。
do...while用的情況比較少。我們有可能用在資源處理如:文件開(kāi)啟等地方。
四、for 迴圈控制語(yǔ)句
#for 迴圈用於預(yù)先知道腳本需要執(zhí)行的次數(shù)的情況
語(yǔ)法:
for (初始值; 條件; 增量)
{
要執(zhí)行的程式碼;
}
參數(shù):
-
?初始值:主要是初始化一個(gè)變數(shù)值,用來(lái)設(shè)定一個(gè)計(jì)數(shù)器(但可以是任何在循環(huán)的開(kāi)始被執(zhí)行一次的程式碼)。
?條件:循環(huán)執(zhí)行的限制條件。如果為 TRUE,則循環(huán)繼續(xù)。如果為 FALSE,則循環(huán)結(jié)束。
?增量:主要用於遞增計(jì)數(shù)器(但可以是任何在迴圈的結(jié)束被執(zhí)行的程式碼)。
註:上面的初始值和增量參數(shù)可為空,或有多個(gè)表達(dá)式(以逗號(hào)分隔)
#實(shí)例:用for迴圈來(lái)輸出1-100。原始碼如下
<?php for($i=1;$i<=50;$i++){ echo $i." "; } ?>
實(shí)例:用for迴圈來(lái)打一下9*9的乘法口訣表吧
<?php //99乘法口訣表從1開(kāi)始,所以聲明一個(gè)變量$i = 1,讓$i小于10,也就是最大值為9 for($i=1;$i<=9;$i++){ //1x1=1,2x2等于4,所以第二次循環(huán)的最大值為$i的值,因此$j=1, $j在循環(huán)自加的過(guò)程當(dāng)中,只能夠小于等于$i for($j=1;$j<=$i;$j++){ echo $i."x".$j."=".$i*$j.' '; } //每行結(jié)束輸出一個(gè)換行 echo "<br/>"; } ?>
#註:在程式碼中是橫著輸出的,換行符在每一個(gè)內(nèi)部的for迴圈結(jié)束後執(zhí)行一次
我們來(lái)補(bǔ)充幾個(gè)跳出的異同吧
語(yǔ)句 | 作用 |
##exit | exit之前我們講過(guò)了,從目前處停止後續(xù)執(zhí)行 |
break | #之前曾經(jīng)遇到過(guò),跳出迴圈或跳出結(jié)構(gòu)體執(zhí)行後續(xù)程式碼 |
#continue | 跳出此次循環(huán),下次循環(huán)繼續(xù) |
<?php for ($i = 1; $i <= 10; $i++) { if($i == 4){ //待會(huì)兒換成contiune試試 break; } echo '學(xué)習(xí)PHP的第'.$i.'天,加油<br />'; } ?>將break換成continue,查看結(jié)果試試:(第4行遺失,其他行正常輸出)
#五、foreach迴圈(此處陣列還沒(méi)介紹,可以看完陣列的介紹之後再學(xué)習(xí)本章)
foreach 迴圈用於遍歷陣列語(yǔ)法為:foreach ($array?as?$value){
要執(zhí)行程式碼;
}
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> <body> <?php $x=array(1,2,3,4); foreach ($x as $value) { echo $value . "<br>"; } ?> </body> </html>