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