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