糯米文學吧

位置:首頁 > 計算機 > php語言

PHP常用控制結構

php語言2.22W

不要嘲笑鐵樹。為了開一次花,它付出了比別的樹種更長久的努力。 以下是小編為大家搜索整理了PHP常用控制結構,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!

PHP常用控制結構

  控制結構

  目錄 流程控制的替代語法

任何 PHP 腳本都是由一系列語句構成的。一條語句可以是一個賦值語句,一個函數調用,一個循環,一個條件語句或者甚至是一個什麼也不做的語句(空語句)。語句通常以分號結束。此外,還可以用花括號將一組語句封裝成一個語句組。語句組本身可以當作是一行語句。本章講述了各種語句類型。 if

if 結構是很多語言包括 PHP 在內最重要的特性之一,它允許按照條件執行代碼片段。PHP 的 if 結構和 C 語言相似:

if (expr)

statement

?>

expr 按照布爾求值。如果 expr 的值為 TRUE,PHP 將執行 statement,如果值為 FALSE - 將忽略 statement。有關哪些值被視為 FALSE 的更多信息參見轉換為布爾值一節。

如果 $a 大於 $b,則以下例子將顯示 a is bigger than b:

if ($a > $b)

echo "a is bigger than b";

?>

經常需要按照條件執行不止一條語句,當然並不需要給每條語句都加上一個 if 子句。可以將這些語句放入語句組中。例如,如果 $a 大於 $b,以下代碼將顯示 a is bigger than b 並且將 $a 的值賦給 $b:

if ($a > $b) {

echo "a is bigger than b";

$b = $a;

}

?>

if 語句可以無限層地嵌套在其它 if 語句中,這給程序的不同部分的條件執行提供了充分的彈性。

: 語言參考 : 控制結構 else

經常需要在滿足某個條件時執行一條語句,而在不滿足該條件時執行其它語句,這正是 else 的功能。else 延伸了 if 語句,可以在 if 語句中的表達式的值為 FALSE 時執行語句。例如以下代碼在 $a 大於 $b 時顯示 a is bigger than b,反之則顯示 a is NOT bigger than b: copy to clipboard

if ($a > $b) {

echo "a is bigger than b";

} else {

echo "a is NOT bigger than b";

}

?>

else 語句僅在 if 以及 elseif(如果有的話)語句中的表達式的值為 FALSE 時執行(參見 elseif)。

<< 控制結構 Main : 語言參考 : 控制結構 : else This page online Report a bug elseif >> elseif

elseif,和此名稱暗示的一樣,是 if 和 else 的組合。和 else 一樣,它延伸了 if 語句,可以在原來的 if 表達式值為 FALSE 時執行不同語句。但是和 else 不一樣的是,它僅在 elseif 的條件表達式值為 TRUE 時執行語句。例如以下代碼將根據條件分別顯示 a is bigger than b,a equal to b 或者 a is smaller than b: copy to clipboard

if ($a > $b) {

echo "a is bigger than b";

} elseif ($a == $b) {

echo "a is equal to b";

} else {

echo "a is smaller than b";

}

?>

在同一個 if 結構中可以有多個 elseif 語句。第一個表達式值為 TRUE 的 elseif 語句(如果有的話)將會執行。在 PHP 中,也可以寫成“else if”(兩個單詞),它和“elseif”(一個單詞)的行為完全一樣。句法分析的含義有少許區別(如果你熟悉 C 語言的話,這是同樣的行為),但是底線是兩者會產生完全一樣的行為。

elseif 的語句僅在之前的 if 或 elseif 的表達式值為 FALSE,而當前的 elseif 表達式值為 TRUE 時執行。

Main : 語言參考 : 控制結構 : elseif This page online Report a bug 流程控制的替代語法 >> << else 流程控制的替代語法

PHP 提供了一些流程控制的替代語法,包括 if,while,for,foreach 和 switch。替代語法的基本形式是把左花括號({)換成冒號(:),把右花括號(})分別換成 endif;,endwhile;,endfor;,endforeach; 以及 endswitch;。 copy to clipboard

A is equal to 5

在上面的例子中,HTML 內容“A is equal to 5”用替代語法嵌套在 if 語句中。該 HTML 的內容僅在 $a 等於 5 時顯示。

替代語法同樣可以用在 else 和 elseif 中。下面是一個包括 elseif 和 else 的 if 結構用替代語法格式寫的例子: copy to clipboard

if ($a == 5):

echo "a equals 5";

echo "...";

elseif ($a == 6):

echo "a equals 6";

echo "!!!";

else:

echo "a is neither 5 nor 6";

endif;

?>

更多例子參見 while,for 和 if。

Main : 語言參考 : 控制結構 : 流程控制的替代語法 This page online Report a bug << elseif while >> while

while 循環是 PHP 中最簡單的循環類型。它和 C 語言中的 while 表現得一樣。while 語句的基本格式是: copy to clipboard

while (expr)

statement

while 語句的含意很簡單,它告訴 PHP 只要 while 表達式的值為 TRUE 就重複執行嵌套中的循環語句。表達式的值在每次開始循環時檢查,所以即使這個值在循環語句中改變了,語句也不會停止執行,直到本次循環結束。有時候如果 while 表達式的值一開始就是 FALSE,則循環語句一次都不會執行。

和 if 語句一樣,可以在 while 循環中用花括號括起一個語句組,或者用替代語法: copy to clipboard

while (expr):

statement

...

endwhile;

下面兩個例子完全一樣,都顯示數字 1 到 10: copy to clipboard

/* example 1 */

$i = 1;

while ($i <= 10) {

echo $i++; /* the printed value would be

$i before the increment

(post-increment) */

}

/* example 2 */

$i = 1;

while ($i <= 10):

print $i;

$i++;

endwhile;

?>

<< 流程控制的替Main : 語言參考 : 控制結代語法 構 : while This page online Report a bug

do-while do-while >>

do-while 和 while 循環非常相似,區別在於表達式的值是在每次循環結束時檢查而不是開始時。和正規的 while 循環主要的區別是 do-while 的循環語句保證會執行一次(表達式的真值在每次循環結束後檢查),然而在正規的 while 循環中就不一定了(表達式真值在循環開始時檢查,如果一開始就為 FALSE 則整個循環立即終止)。

do-while 循環只有一種語法: copy to clipboard

$i = 0;

do {

echo $i;

} while ($i > 0);

?>

以上循環將正好運行一次,因為經過第一次循環後,當檢查表達式的真值時,其值為 FALSE($i 不大於 0)而導致循環終止。

資深的 C 語言用户可能熟悉另一種不同的 do-while 循環用法,把語句放在 do-while(0) 之中,在循環內部用 break 語句來結束執行循環。以下代碼片段示範了此方法: copy to clipboard

do {

if ($i < 5) {

echo "i is not big enough";

break;

}

$i *= $factor;

if ($i < $minimum_limit) {

break;

}

echo "i is ok";

/* process i */

} while(0);

?>

如果還不能立刻理解也不用擔心。即使不用此“特性”也照樣可以寫出強大的代碼來。

for

copy to clipboard

for (expr1; expr2; expr3)

statement

第一個表達式(expr1)在循環開始前無條件求值一次。

expr2 在每次循環開始前求值。如果值為 TRUE,則繼續循環,執行嵌套的循環語句。如果值為 FALSE,則終止循環。

expr3 在每次循環之後被求值(執行)。

每個表達式都可以為空。expr2 為空意味着將無限循環下去(和 C 一樣,PHP 認為其值為 TRUE)。這可能不像想象中那樣沒有用,因為經常會希望用 break 語句來結束循環而不是用 for 的表達式真值判斷。

考慮以下的例子,它們都顯示數字 1 到 10: copy to clipboard

/* example 1 */

for ($i = 1; $i <= 10; $i++) {

echo $i;

}

/* example 2 */

for ($i = 1; ; $i++) {

if ($i > 10) {

break;

}

echo $i;

}

/* example 3 */

$i = 1;

for (;;) {

if ($i > 10) {

break;

}

echo $i;

$i++;

}

/* example 4 */

for ($i = 1; $i <= 10; echo $i, $i++);

?>

當然,第一個例子看上去最正常(或者第四個),但用户可能會發現在 for 循環中用空的表達式在很多場合下會很方便。

PHP 也支持用冒號的 for 循環的替代語法。 copy to clipboard

for (expr1; expr2; expr3):

statement;

...

endfor; << do-while Main : 語言參考 : 控制結構 : for This page online Report a bug foreach >> foreach

標籤:控制結構 PHP