thinkphp 如何进行页面变量包含字符的判断?

{$cus.bussiness_project}
<if condition="stripos($cus.bussiness_project,'1') eq '0'">域名</if>
<if condition="stripos($cus.bussiness_project,'2') eq '0'">空间</if>
<if condition="strpos($cus.bussiness_project,'3',0) eq 0 ">邮箱</if>
<if condition="strpos($cus.bussiness_project,'4',0) neq 0">其它</if>
第一行的变量是从checkbox中取出的如"1,2","1,3,4"这样的字符串
我想判断,如果其中包含1,则输出“域名”,如果包含2,则输出空间(多选)。
现在我的代码为什么判断下来,eq 0 都是成立的呢?

如图

注意:stripos返回查找的字符串在被查找字符串开始的位置,起始于 0,找不到就返回false

但是php中0和false是eq的,所以你上面的代码eq 0 由两重意思:①在第一个位置,②找不到,那显然就出现你的结果了

换一下思路,查找不恒等于false就显示,举个例子,注意是nheq,不恒等于

<if condition="stripos($cus.bussiness_project,'1') nheq false">域名</if>

追问

谢谢回答。

但是,你看下我显示页面,域名前面的带数字的字符串,就是变量的值。为啥1存在和不存在的时候,都会显示“域名”呢?也就是说现在不管包不包含“1”,最后它判断都是eq 0或者 false。不管包不包含“2”,最后都显示“空间”。

换成你的代码以后,不管包含不包含1,域名都没有显示。如图

追答

1、为啥1存在和不存在的时候,都会显示“域名”呢?

这个上面回答已经解释了呀。根据你的代码:

存在1,stripos($cus.bussiness_project,'1')返回1的位置,即0,stripos($cus.bussiness_project,'1') eq '0'返回的是true,那就显示

不存在1,stripos($cus.bussiness_project,'1')找不到1,返回false,false和0是相等的,因此stripos($cus.bussiness_project,'1') eq '0'返回的还是true,还是显示

2、if标签支持点语法,但是php函数内不要用点语法,按以下修改应该没有问题了

{$cus.bussiness_project}
<if condition="stripos($cus['bussiness_project'],'1') nheq false">域名</if>
<if condition="stripos($cus['bussiness_project'],'2') nheq false">空间</if>
<if condition="stripos($cus['bussiness_project'],'3') nheq false">邮箱</if>
<if condition="stripos($cus['bussiness_project'],'4') nheq false">其它</if>

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网