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 都是成立的呢?

如图
展开
 我来答
learneroner
高粉答主

2014-08-06 · 关注我不会让你失望
知道大有可为答主
回答量:1.1万
采纳率:91%
帮助的人:6564万
展开全部

注意: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>
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式