在 PHP 腳本中,任何代碼都是由一系列語(yǔ)句組成的,其中,if 語(yǔ)句和 else 語(yǔ)句是 PHP 語(yǔ)言中最重要的特性之一。if 語(yǔ)句允許根據(jù)條件執(zhí)行特定的代碼塊;而 else 語(yǔ)句延伸了 if 語(yǔ)句,可以在 if 語(yǔ)句中的表達(dá)式的值為 false 時(shí)執(zhí)行語(yǔ)句。
一、if語(yǔ)句
PHP 的 if 結(jié)構(gòu)和 C 語(yǔ)言相似:
<?php if (expr) statement ?>
expr 會(huì)根據(jù)其布爾值進(jìn)行求值。如果 expr 的值為 true,PHP 將執(zhí)行 statement;如果值為 false,則忽略 statement。有關(guān)哪些值被視為 false 的更多信息參見(jiàn)《PHP Boolean 布爾類(lèi)型》。
如果 $a 大于 $b,則以下例子將顯示 a is bigger than b:
<?php if ($a > $b) echo "a is bigger than b"; ?>
在需要按照條件執(zhí)行多條語(yǔ)句的情況下,不必為每條語(yǔ)句都添加一個(gè) if 子句,可以將這些語(yǔ)句放入一個(gè)語(yǔ)句組中,然后根據(jù)條件來(lái)執(zhí)行或忽略這個(gè)語(yǔ)句組。例如:如果 $a 大于 $b,以下代碼將顯示 a is bigger than b 并且將 $a 的值賦給 $b:
<?php if ($a > $b) { echo "a is bigger than b"; $b = $a; } ?>
if 語(yǔ)句可以無(wú)限層地嵌套在其他 if 語(yǔ)句中,使程序可以根據(jù)不同條件靈活地執(zhí)行不同的代碼塊。這種嵌套結(jié)構(gòu)為程序提供了充分的彈性,實(shí)現(xiàn)在不同條件下執(zhí)行相應(yīng)的操作。
二、else語(yǔ)句
在編程中,經(jīng)常需要在滿(mǎn)足某個(gè)條件時(shí)執(zhí)行一條語(yǔ)句,而在不滿(mǎn)足該條件時(shí)執(zhí)行其他語(yǔ)句。這正是 else 的功能所在。else 擴(kuò)展了 if 語(yǔ)句,可以在 if 語(yǔ)句中的表達(dá)式的值為 false 時(shí)執(zhí)行相應(yīng)的語(yǔ)句。通過(guò)使用 else,我們可以更加靈活地控制程序的執(zhí)行流程。
例如以下代碼在 $a 大于 $b 時(shí)顯示 a is bigger than b,反之則顯示 a is NOT bigger than b:
<?php if ($a > $b) { echo "a is greater than b"; } else { echo "a is NOT greater than b"; } ?>
else 語(yǔ)句僅在 if 以及 elseif 語(yǔ)句中的表達(dá)式的值為 false 時(shí)執(zhí)行,如果 if 或 elseif 語(yǔ)句中的表達(dá)式為 true,則 else 語(yǔ)句將不會(huì)被執(zhí)行。
懸掛的else
在多層嵌套的 if-else 語(yǔ)句中,else 總是與最近的 if 進(jìn)行關(guān)聯(lián):
<?php $a = false; $b = true; if ($a) if ($b) echo "b"; else echo "c"; ?>
雖然存在縮進(jìn),但是 else 還是與 if ($b) 進(jìn)行關(guān)聯(lián)。因此,以上示例不會(huì)產(chǎn)生任何輸出。盡管可以依賴(lài)此特性,但推薦使用花括號(hào)來(lái)避免潛在的歧義問(wèn)題。