什么是'Null coalesce' (??)运算符用于?

时间:2015-11-12 07:28:17

标签: php coding-style operators php-7

随着新版PHP 7的发布,推出了新功能。这些新功能中有一个我不熟悉的操作员。 Null coalesce operator

这个运算符是什么以及什么是好的用例?

3 个答案:

答案 0 :(得分:4)

您可以使用它来初始化一个可能为null的变量

  

?? operator被称为null-coalescing运算符。它返回   如果操作数不为空,则为左操作数;否则它返回   右手操作。

来源:https://msdn.microsoft.com/nl-nl/library/ms173224.aspx

(不依赖于语言)

用例

你可以写

$rabbits;

$rabbits = count($somearray);

if ($rabbits == null) {
    $rabbits = 0;
}

您可以使用较短的符号

$rabbits = $rabbits ?? 0;

答案 1 :(得分:1)

根据PHP手册:

  

对于需要与isset()一起使用三元组的常见情况,已添加null coalesce运算符(??)作为语法糖。它返回第一个操作数(如果存在且不为NULL);否则它返回第二个操作数。

// Fetches the value of $_GET['user'] and returns 'nobody'
// if it does not exist.
$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

// Coalesces can be chained: this will return the first
// defined value out of $_GET['user'], $_POST['user'], and
// 'nobody'.
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';

答案 2 :(得分:0)

$username = $_GET['user'] ?? 'nobody'; 

相同

$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

??是三元速记