使用null coalesce运算符时has()始终为true?

时间:2017-06-18 12:52:24

标签: php laravel

我目前在表单中使用以下代码:

{{ $errors->has('email') ? ' has-error' : '' }}

我尝试将其更改为:

{{ $errors->has('email') ?: ' has-error' }}

但现在即使没有错误,也会添加该类。为什么会这样?好奇。

2 个答案:

答案 0 :(得分:1)

这就是null coalesce operator的工作原理。例如,这将返回5:

false ?: 5

当您使用将返回has()true的{​​{1}}方法时,null coalesce运算符将始终返回false

所以,只需使用三元运算符。

答案 1 :(得分:1)

似乎空合并的工作方式与三元不同,即使变量为empty ( '' ),即假空值合并将变量视为true,但速记三元运算符不会。这是需要考虑的事情。

https://3v4l.org/fnG9W

有关null coalescing vs ternary的更多信息。

PHP ternary operator vs null coalescing operator