如何解决PHP Null合并运算符的用法
在PHP中具有使用三级运算符的示例代码,我得到了“默认值”。
$myObject = null; // I'm doing this for the example
$result = $myObject ? $myObject->path() : 'default value';
但是,当我尝试使用null合并运算符执行此操作时,出现错误
$result = $myObject->path() ?? 'default value';
我在做什么错了?运算符?
解决方法
这些代码片段的工作方式不同:
$result = $myObject ? $myObject->path() : 'default value';
说:如果'default value'
是$myObject
NULL
$result = $myObject->path() ?? 'default value';
说:如果$myObject->path()
返回NULL
,则使用默认值-但是,只有对象本身不是NULL
SQL Error [22P02]: ERROR: invalid input syntax for type json
Detail: Token "InnerArray" is invalid.
Position: 49
Where: JSON data,line 1: InnerArray
将在左侧为空或未设置的情况下起作用,但是在您的情况下,如果??
为空,则无法评估左侧。
在您的情况下,您应该考虑的是PHP 8提供了新的nullsafe operator(因此需要等待)
$myObject
如果$result = $myObject?->path() ?? 'default value';
为空,这应该使左侧为空
直到您可以这样做:
$myObject
这与您的第一个用例不同,如果$result = ($myObject ? $myObject->path() : null) ?? 'default value';
或 default value
为空,则会得到$myObject
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。