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