为了账号安全,请及时绑定邮箱和手机立即绑定

empty判断为0是true的问题

empty判断为0是true的问题

茅侃侃 2019-04-27 17:18:56
我再后台接收get变量,empty总是把0也算成是空,也返回true,可是我的0是有意义的,查询state=0,if(!empty($params['state'])){$fields.='ANDstate=:state';$value['state']=(int)$params['state'];}比如这种,state=0,就直接跳过去了,他认为是true。然后我换成了,is_numeric,if(!is_numeric($params['state'])){$fields.='ANDstate=:state';$value['state']=(int)$params['state'];}我以为高枕无忧了,然后又出现一个问题,如果作为get变量,state这个值根本不存在,is_numeric就会报错,他没有empty判断变量是否存在的能力。因为必须得判断变量是否存在,如果不校验,后面的代码上来就使用,可能会报错。这就比较尴尬了。怎么才能两全其美,即能判断变量是否存在,也能把0认为是false,非空的办法!难道是我错了?如果设置数据库,状态值,男女,类似这种,就不该让0出现?设计成1,2?大神要怎么办呢?
查看完整描述

2 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

isset($params['state'])&&is_numeric($params['state'])
如果变量不存在,不会走到第二个函数
                            
查看完整回答
反对 回复 2019-04-27
?
冉冉说

TA贡献1877条经验 获得超1个赞

array_key_exists判断数组是否存在key值array_key_exists('state',$params);就可以了
                            
查看完整回答
反对 回复 2019-04-27
  • 2 回答
  • 0 关注
  • 383 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号