Laravel中@if多值判断语法问题求助
解决Laravel Blade多类型匹配的@if判断问题
嗨,我来帮你搞定这个Blade模板的条件判断问题~你当前的写法之所以只能匹配单个类型,是因为PHP的==比较运算符只能和单个值做比较,你用逗号分隔多个值的写法不符合语法规范,后面的'news'和'interview'实际上会被PHP忽略,自然没法同时匹配啦。
给你两种靠谱的解决办法:
方法一:用in_array()函数(推荐,简洁易维护)
这是处理多值匹配最常用的方式,直接检查字段值是否在目标数组里:
@if(in_array($article->type, ['analytic', 'news', 'interview'])) SHOW THIS @endif
原理很简单:in_array()会验证第一个参数($article->type)是否存在于第二个参数的数组中,只要匹配其中任意一个值,就会返回true,从而显示你想要的内容。
方法二:用逻辑或运算符||
如果值的数量不多,也可以用多个==判断通过||连接,逻辑上是一样的:
@if($article->type == 'analytic' || $article->type == 'news' || $article->type == 'interview') SHOW THIS @endif
这里每个条件单独判断,只要其中一个条件成立,整个表达式就会为true。
小提示
如果这些类型是项目里固定的业务值,建议把它们放到配置文件里(比如config/app.php),后续修改类型时不用改动视图代码:
// config/app.php 'allowed_article_types' => ['analytic', 'news', 'interview'],
然后在视图里这样用:
@if(in_array($article->type, config('app.allowed_article_types'))) SHOW THIS @endif
内容的提问来源于stack exchange,提问作者Bochorishvili Nikusha
相关产品推荐
相关产品推荐

