PHP 中的空合併與 elvis 運算子

Subodh Poudel 2023年1月30日
  1. PHP 中的 elvis 運算子
  2. PHP 中的空合併運算子
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 運算子。它與三元運算子略有不同;它只是省略了第二個運算元(在 conditionstatement2 之間)並使其更短。

語法:

condition?:statement;

在這裡,如果條件評估為真,則返回條件。否則,它將返回語句

上述 Elvis 語法的三元表示如下所示。

conditon ? condition : statement;

注意:像 0falseNULL""[]"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 的值是 false0 還是 '' 無關緊要。即使 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 Poudel
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