跳轉到內容

PHP 程式設計/if 結構

來自華夏公益教科書,自由的教科書

條件結構

[編輯 | 編輯原始碼]

if語句

[編輯 | 編輯原始碼]

條件結構 用於控制哪些語句被執行。它們由三個基本元素組成

  • if語句;
  • elseif語句;和
  • if else語句。

PHP 中的條件語句結構類似於 C++Java 中的條件語句結構。結構以一個if子句開始,它由單詞“ifif” 後面跟著一個true/false語句,括號括起來( )。隨後的程式碼將包含在一個塊中,由大括號{ }表示。有時會省略大括號,只有一行程式碼緊隨其後if語句。elseifelse子句有時會出現在if子句之後,用來測試不同的語句。

if子句的意思是“如果這個語句為真,我希望程式執行以下語句。如果為假,則忽略這些語句。”在技術上,它的工作原理是這樣的:當一個if語句被遇到時,true/false語句中的括號內的內容會被評估。如果發現語句為真,則執行緊隨其後的包含在大括號內的程式碼塊。但是,如果發現語句為假,程式將跳過這些行並執行下一行非空白行。

if子句之後是兩個可選子句elseelseif。該elseif(或else if) 子句的意思是“如果上一個語句為假,讓我們看看,如果這個語句為真。如果為真,則執行以下程式碼。如果為假,則跳過它。”elseif語句只有在上一個if語句的結果為假時才會被評估。否則,它們會被跳過。除此之外,elseif子句的工作原理與普通的if子句相同。如果為真,則執行其程式碼塊,如果為假,則跳過其程式碼塊。

最後,else子句作為一個“兜底”用於if語句。本質上,else語句的意思是“如果所有前面的測試都失敗了,那麼執行這段程式碼。”

<?php
$foo = 1;
$bar = 2;
if ($foo == $bar) {
  echo "$foo is equal to $bar.";
} elseif ($foo > $bar) {
  echo "$foo is greater than $bar.";
} else {
  echo "$foo is less than $bar.";
}
?>
<?php
$lower = 10;
$upper = 100;
$needle = 25;
if (($needle >= $lower) && ($needle <= $upper)) {
  echo "The needle is in the haystack.";
} elseif (($needle <= $lower) || ($needle >= $upper)) {
  echo "The needle is outside of the haystack.";
}
?>

條件表示式

[編輯 | 編輯原始碼]

條件值 透過基本的 формальной логики 來工作。理解if子句以及其他子句如何評估這些條件值非常重要。

boolean值來考慮是最簡單的,這意味著條件值的結果將是 TRUE 或 FALSE,而不是兩者兼而有之。例如,如果變數$x = 4,並且用表示式呼叫條件結構if ($x == 4),則表示式的結果為 TRUE,if結構將執行。但是,如果表示式是($x == 0),則結果為 FALSE,程式碼將不會執行。這很簡單。

當考慮複雜表示式時,情況會變得更復雜。表示式可以連線在一起的兩個基本運算子是AND (&&&&) 和OR (||).

||)。

示例

[編輯 | 編輯原始碼]我們給出變數$x.

$x = 4;
$y = 8;

$y

($x == 4 AND $y == 8)

給定複雜表示式

我們得到 TRUE 的結果,因為兩個單獨表示式的結果都為真。當表示式使用 AND 運算子連線時,兩邊必須為真,整個表示式才為真。

($x == 4 OR $y == 8)

類似地我們也得到TRUE

的結果,因為至少有一個表示式為真。當表示式使用 OR 運算子連線時,至少有一邊必須為真,整個表示式才為真。

  ($x == 4 AND $y == 10)

相反地,這個表示式將返回FALSE

,因為整個表示式中至少有一個表示式為假。

  ($x == 4 OR $y == 10)

相反地,我們也得到但是,

,因為整個表示式中至少有一個表示式為真。

程式碼塊

[編輯 | 編輯原始碼]{ }程式碼塊是一個或多個語句或命令,它們包含在一對大括號if之間。程式碼塊主要用於迴圈、條件語句和函式。程式碼塊可以相互巢狀,例如一個

結構在一個函式內的迴圈中。

如果在某個條件語句之後沒有用大括號括起來的程式碼塊,則只執行下一個語句。建議您避免使用這種方法,以防止在程式碼塊之後新增額外程式碼時發生意外錯誤。
if (FALSE)
  echo 'FALSE evaluates to true.';
  echo 'Who knew that FALSE was TRUE?';
以下程式碼將無法按預期工作第二個echoif語句被執行,儘管if語句。

子句。缺少括號導致 if 語句只應用於第一個語句,使得第二個語句無論

語句的結果如何都會被評估。
if (FALSE) {
  echo 'FALSE evaluates to true.';
  echo 'Who knew that FALSE was TRUE?';
}
為了避免此問題,請確保在條件語句中使用括號,即使只執行一行程式碼。這可以防止在您在現有程式碼塊之後新增額外行時出現上述程式碼中的錯誤。


這段程式碼修復了之前的錯誤。

這段程式碼中第二個 echo 語句永遠不應該被執行。

簡寫符號

[編輯 | 編輯原始碼]
$money = 535; # $

print 'I have' . ($money > 500 ? '' : 'n’t') . ' enough money.';
如果您正在編寫一個長句子,其中有些部分不是靜態的,您可以使用 if 語句建立該字串。PHP 語法允許您在同一行內完成此操作,使用以下簡寫語法


這段程式碼在同一行中使用了簡寫語法。

[編輯 | 編輯原始碼]


華夏公益教科書