空合并是PHP 7中引入的新运算符。如果未设置,则该运算符返回其第一个操作数NULL。否则,它将返回其第二个操作数。
下面的例子:
$name = $_POST['name'] ?? 'nobody';
等同于两者:
if (isset($_POST['name'])) { $name = $_POST['name']; } else { $name = 'nobody'; }
和:
$name = isset($_POST['name']) ? $_POST['name'] : 'nobody';
该运算符也可以被链接(具有右关联语义):
$name = $_GET['name'] ?? $_POST['name'] ?? 'nobody';
这等效于:
if (isset($_GET['name'])) { $name = $_GET['name']; } elseif (isset($_POST['name'])) { $name = $_POST['name']; } else { $name = 'nobody'; }
注意:
在字符串连接上使用合并运算符时,请不要忘记使用括号()
$firstName = "John"; $lastName = "Doe"; echo $firstName ?? "Unknown" . " " . $lastName ?? "";
这将John仅输出,如果其$firstName为null,而$lastName为$lastName Doe,则将输出Unknown Doe。为了输出John Doe,我们必须使用这样的括号。
$firstName = "John"; $lastName = "Doe"; echo ($firstName ?? "Unknown") . " " . ($lastName ?? "");
这将输出John Doe而不是John仅输出。
有人能解释一下PHP中三元运算符速记()和空合并运算符()之间的区别吗? 他们什么时候表现不同,什么时候表现相同(如果发生的话)? VS。
问题内容: 有人可以解释PHP中的三元运算符速记()和空合并运算符()之间的区别吗? 它们什么时候表现不同,什么时候以相同的方式表现(如果甚至发生)? VS。 问题答案: 当您的第一个参数为null时,它们基本相同,不同之处在于,当您有未定义的变量时,null合并不会输出。在PHP7.0迁移的文档有这样一段话: 对于需要将三元数与isset()结合使用的常见情况,已将空合并运算符(??)添加为语法
问题内容: PHP中是否存在像C#一样的三元运算符? 在C#中更干净,更短,但是在PHP中,您必须执行以下操作: 问题答案: PHP 7添加了空合并运算符: 您还可以看一下编写PHP三元运算符?的简短方法:(仅PHP> = 5.3) 而且您与C#的比较是不公平的。“在PHP中,您必须做类似的事情”-在C#中,如果您尝试访问不存在的数组/字典项,那么还将出现运行时错误。
A recent addition This is a recent addition to the language. Old browsers may need polyfills. 在本文中,我们将值既不是 null 也不是 undefined 的表达式称为“已定义的(defined)”。 空值合并运算符(nullish coalescing operator)的写法为两个问号 ??。 a
本文向大家介绍Kotlin 空合并/Elvis运算符,包括了Kotlin 空合并/Elvis运算符的使用技巧和注意事项,需要的朋友参考一下 示例 有时希望以if-else方式评估可为空的表达式。Elvis运算符?:可以在Kotlin中用于这种情况。 例如: 如果 data?.first ()或数据本身产生 null 值,则上面的表达式返回“ Nothing here” ,否则返回 data?. f
问题内容: Javascript中是否存在空合并运算符? 例如,在C#中,我可以这样做: 我可以为Javascript找到的最佳近似是使用条件运算符: 这有点怪异恕我直言。我可以做得更好吗? 问题答案: 更新资料 JavaScript现在支持无效的合并运算符(??)。当其左侧操作数为或时,它返回其右侧操作数,否则返回其左侧操作数。 使用前请检查兼容性。 与C#null合并运算符()等效的JavaS