PHP7引入的 和 有什么区别
吉茹定 2023-09-15编程经验
PHP7引入了不同类型的null合并运算符,这些运算符的使用可以大大简化PHP编程工作的代码量,并且提高效率。新引入的两个null运算符是??和??=。这两个运算符都与null值有关,
PHP7 引入了不同类型的 null 合并运算符,这些运算符的使用可以大大简化 PHP 编程工作的代码量,并且提高效率。新引入的两个 null 运算符是 ?? 和 ??= 。这两个运算符都与 null 值有关,但它们实际上还是有所不同的。下面将详细介绍这两个运算符。
?? 运算符
简单地说, ?? 运算符是一种新的二进制运算符,在表达式中它可以用来检测和合并变量
下面是一个使用 ?? 运算符的简单示例:
$name = $_GET['name'] ?? 'John Doe'; echo $name;
在此示例中,如果 $_GET['name'] 存在,则 $name 将设置为 $_GET['name'] ,否则它将设置为 'John Doe' 。注意,如果你使用等式 “==” 来比较变量,那么在使用 ?? 运算符时,一个空数组和一个 null 值并不相等。例如,下面的代码返回 "Empty" :
$a = []; echo $a['b'] ?? 'Empty'; // Empty
??= 运算符
第二个运算符是新的赋值运算符,使用 ??= 运算符来检测和设置一个变量为 null 时。这个运算符的作用与 ? 运算符很相似,但是它直接影响操作数,并将它们附加到当前状态。
下面是一个使用 ??= 运算符的简单示例:
$name = null; $name ??= 'John Doe'; echo $name;
在此示例中,如果 $name 为 null,则将其设置为 'John Doe' 。请注意,这与之前的 ?? 运算符不同,因为 ?? 运算符中,变量不会直接被修改。相反,它在自己的上下文中存在,直到将值添加到变量中。下面是一个该运算符的简单示例:
$a = null; $a ??= 'Here'; echo $a; // Here $a = 'There'; $a ??= 'Here'; echo $a; // There
区别
?? 和 ??= 这两个运算符的区别在于它们使用的上下文和它们原本的行为。?? 运算符只是用来检测和设置变量,不会让变量直接发生变化。而 ??= 运算符会直接作用于变量并修改它们。这两个运算符的不同点可能很小,但是在不同情况下使用时有着非常明显的区别,也很明显地提高了 PHP 编程的效率。
很赞哦! ()