PHP 中的問號符號

Subodh Poudel 2023年1月30日 2022年5月13日
  1. PHP 中三元運算子簡介
  2. 在 PHP 中使用三元運算子評估 TrueFalse 表示式
PHP 中的問號符號

在 PHP 中,問號 ? 運算子稱為三元運算子或條件三元運算子。本文將深入探討 PHP 中的三元運算子。

PHP 中三元運算子簡介

三元運算子是其中一種,因為它只需要三個運算元。

  1. 第一個運算元是要計算的表示式。通常,比較引數。它返回一個布林值。
  2. 第二個運算元是第一個表示式返回真值時要執行的表示式。
  3. 如果第一個表示式返回 false 值,則將評估第三個表示式。

問號符號 ? 將要計算的表示式與其餘表示式分開。此外,冒號:用於分隔第二個和第三個運算元。

語法:

expression1?expression2:expression3

參考上面的語法示例,如果 expression1 將返回 true,則 expression2 將執行。如果 expression1 計算出 false,則 expression3 將執行。

例如,建立一個變數 $ran_num 並將其分配給一個表示式。該表示式使用 rand(0,10) 函式並比較它是否大於 5

接下來,使用三元運算子,其中 $ran_num 變數是要計算的表示式。然後,為第二個表示式寫 heads,為第三個表示式寫 tails

因此,下面示例中顯示的程式碼片段將列印 headstails

示例程式碼:

<?php
$ran_num = (rand(0,10))>5;
echo $ran_num ?"heads":"tails";
?>

輸出:

tails

我們可以使用三元運算子來代替 if-else 結構來縮短程式碼長度並提高可讀性。我們可以使用它來編寫更簡單的條件表示式。

示例程式碼:

<?php
$count = (true) ? 1 : 0;

if (true)
{
    $count = 1;
}
else
{
    $count = 0;
}
echo $count;
?>

輸出:

1

但是,當我們連結或巢狀三元運算子時,可能不容易閱讀程式碼。三元運算子的另一個缺點是很難除錯程式碼,因為我們不能在子表示式中放置斷點。

在 PHP 中使用三元運算子評估 TrueFalse 表示式

我們將研究三元運算子的用法。下面的示例將評估 true 表示式並相應地執行程式碼塊。

canVote() 函式將確定一個人是否可以投票。首先,變數 $age 是否大於或等於 18

接下來,我們以 21 的值作為引數呼叫 canVote() 函式,這是一個合法的投票年齡。在這裡,表示式被評估為 true,然後執行第二個。

示例程式碼:

<?php
function canVote($age){
    echo $age>=18 ?"you can vote": "you cannot vote";
}
canVote(21);
?>

輸出:

you can vote

在下一個示例中,如果我們提供小於 18 的值,則比較表示式將被評估為 false。因此,將顯示第三個表示式 you cannot vote

示例程式碼:

<?php
function canVote($age){
    echo $age>=18 ?"you can vote": "you cannot vote";
}
canVote(17);
?>

輸出:

you cannot vote

在其他情況下,要表達的評估將返回 false 值。例如,如果表示式返回一個 null 值、Nan0empty 值,則該表示式將返回一個 false 值。

以下示例顯示了 falsy 值的條件。當計算這些值時,三元運算子將執行第三個表示式。

示例程式碼:

<?php
function Car($name){
    echo $name?$name:"no name";
    echo "<br>";
}
Car("Tesla");
Car(null);
Car("");
Car(0);
?>

輸出:

Tesla
no name
no name
no name
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

相關文章 - PHP Operator