PHP 中的空合併與 elvis 運算子
本文將通過演示區分 PHP 中的 null 合併運算子和 Elvis 運算子。
PHP 中的 elvis 運算子
首先,讓我們瞭解一下 Elvis 運算子。PHP Elvis 運算子是三元運算子的簡寫運算子。
我們也可以說它是三元運算子的修改形式。要了解 PHP Elvis 運算子,我們必須瞭解三元運算子及其工作原理。
三元運算子是一種條件運算子,用於對具有簡單語句的條件執行簡單比較或檢查。它是 if-else
語句的較短版本。
它減少了執行條件操作的程式碼長度。操作的順序是從左到右。
語法:
condition? statement1 : statement2;
在三元運算子中,首先評估條件
。如果條件為真,則執行 statement1
,如果條件為假,則執行 statement2
。
它被稱為三元運算子,因為它需要三個運算元,即一個條件,一個結果語句為真,一個語句為假。
示例程式碼:
<?php
$marks = 80;
$result = $marks >= 40 ? 'Pass': 'Fail';
echo $result;
?>
上面的示例將顯示 Pass
,因為條件 $marks >= 40
為真。
輸出:
Pass
現在讓我們看一下 Elvis 運算子。它與三元運算子略有不同;它只是省略了第二個運算元(在 condition
和 statement2
之間)並使其更短。
語法:
condition?:statement;
在這裡,如果條件
評估為真,則返回條件
。否則,它將返回語句
。
上述 Elvis 語法的三元表示如下所示。
conditon ? condition : statement;
注意:像 0
、false
、NULL
、""
、[]
、"0"
等值在 PHP 中被認為是錯誤值。
讓我們看一些 elvis 運算子的例子。
示例程式碼:
<?php
$name = "John Doe";
$yourName = $name ?: 'No name';
echo $yourName."<br>";
$marks = "";
$yourMarks = $marks ?: 'No marks';
echo $yourMarks."<br>";
$address = null;
$yourAddress = $address ?: 'No Address';
echo $yourAddress."<br>";
$age = false;
$yourAge = $age ?: 'No age';
echo $yourAge."<br>";
?>
輸出:
John Doe
No marks
No Address
No age
由於 $name
變數返回 true
,所以評估變數的值。在其餘情況下,變數 $marks
、$address
和 $age
返回 false
,因此計算右側的運算元。
因此,我們可以得出結論,elvis 運算元的輸出取決於條件的真
或假
狀態。
PHP 中的空合併運算子
空合併運算子檢查給定變數是否為空,並從這對值中返回非空值。空合併運算子的輸出取決於變數是否為空。
讓我們看看下面的語法來理解它。
statment1 ?? statement2;
在這裡,如果 statment1
的計算結果為空,statment2
將被返回。如果 statment1
是一個非空值,它將被返回。
在 null 合併運算子中,statement
的值是 false
、0
還是 ''
無關緊要。即使 statement
有虛假值,它的值也會被返回。
這是 Elvis 運算子和 null 合併運算子之間的主要區別。空值合併運算子的一些示例是:
示例程式碼:
<?php
$name = "John Doe";
$yourName = $name ?? 'No name';
echo $yourName."<br>";
$marks = "";
$yourMarks = $marks ?? 'No marks';
echo $yourMarks."<br>";
$age = false;
$yourAge = $age ?? 'No age';
echo $yourAge."<br>";
$address = null;
$yourAddress = $address ?? 'No Address';
echo $yourAddress."<br>";
?>
輸出:
John Doe
No Address
在這裡,變數 $name
為真,然後在輸出部分對其進行評估和列印。接下來,變數 $marks
是一個空字串;空字串是假值。
第二個運算元不被評估,因為它不是空值。輸出部分中有一個空白,因為評估的是空字串。
$age
變數的情況相同,因為它儲存一個假值但不為空值。最後,$address
變數有一個空值;因此,計算第二個運算元 No Address
。
從上面的例子和解釋中,我們可以得出結論,elvis 運算元和空值合併運算元的顯著區別在於 elvis 運算元檢查值是否為真。儘管如此,null 合併運算子仍會檢查值是否不為 null。
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