为何$lead->role_id == '13','0'判断为假?如何实现多值相等判断
Laravel Blade多值判断问题解析
为什么你的判断返回false?
你写的@if($lead->role_id == '13','0')是错误写法,问题出在PHP的逗号表达式特性:
- 逗号表达式会依次执行每个部分,最终返回最后一个表达式的值。这里整个条件会被解析为执行
$lead->role_id == '13'(结果直接丢弃),然后返回字符串'0'。 - 在Blade的
@if中,字符串'0'会被PHP转为布尔值false,所以不管$lead->role_id实际是什么,这个判断都会返回false。
正确的多值判断写法
有两种常用的正确实现方式:
方式1:使用逻辑或运算符||
直接分开两次比较,用逻辑或连接,逻辑清晰直观:
@if($lead->role_id == '13' || $lead->role_id == '0') // 满足条件时执行的内容 @endif
如果需要严格类型匹配(比如role_id是整数类型,不想和字符串'13'匹配),可以用===代替==:
@if($lead->role_id === 13 || $lead->role_id === 0) // 严格类型匹配的逻辑 @endif
方式2:使用in_array()函数
把需要匹配的值放到数组里,用数组包含判断更简洁,适合匹配值较多的场景:
@if(in_array($lead->role_id, ['13', '0'])) // 满足条件时执行的内容 @endif
同样,严格类型匹配可以添加第三个参数true:
@if(in_array($lead->role_id, [13, 0], true)) // 严格类型匹配的逻辑 @endif
内容的提问来源于stack exchange,提问作者Mahmoud Osama
相关产品推荐
相关产品推荐

