Php Null合并运算符

时间:2018-05-17 13:50:17

标签: php php-7.1 null-coalescing-operator

我想了解public class A { void doSomething() { System.out.println("a"); } } public class B extends A { @Override void doSomething() { System.out.println("b"); } } A a = new B(); a.doSomething(); // will print "b" 的确如何运作。因此,在阅读php.net中的文档和stackoverflow上的一些帖子后,我测试了很多示例。

但是,我无法理解这段代码:

null coalescing operator

因为它相当于(来自php.net#null-coalescing

<?php 
$x = false ?? 'stackoverflow';
var_dump($x); // bool(false)

并且isset(false) ? false : 'stackoverflow'; 生成isset(false)

有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:2)

Null coalescing运算符返回第一个操作数(如果存在且不为NULL);

否则返回第二个操作数。

在您的情况下,第一个操作数为false,因此将其分配给变量。例如;如果将null初始化为第一个操作数,则它将分配第二个操作数值,如图所示。

 $a = null;
 $x = $a ?? 'abc';
 var_dump($x);

Result :
string(3) "abc"