thinkphp 如何进行页面变量包含字符的判断?
{$cus.bussiness_project}<ifcondition="stripos($cus.bussiness_project,'1')eq'0'">域名</i...
{$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 都是成立的呢?
如图 展开
<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 都是成立的呢?
如图 展开
1个回答
展开全部
注意:stripos返回查找的字符串在被查找字符串开始的位置,起始于 0,找不到就返回false
但是php中0和false是eq的,所以你上面的代码eq 0 由两重意思:①在第一个位置,②找不到,那显然就出现你的结果了
换一下思路,查找不恒等于false就显示,举个例子,注意是nheq,不恒等于
<if condition="stripos($cus.bussiness_project,'1') nheq false">域名</if>
追问
追答
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>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询