400-800-9385
网站建设资讯详细

关于网站程序开发里有关0与空字符、null的知识

发表日期:2019-09-19 09:42:05   作者来源:信   浏览:112   标签:网站开发    
前段时间,在QQ上突然收到一个客户的消息,说分销商的订购库存出现了问题,聊天记录如下图所示:
 

开发程序



他的网站是关于在微信里的在线门票订购系统,每种票型都可以设置分销商所能购买的数量,一旦购买了设置的最大数量,则分销商将无法购买该门票,如果不设置数量,则默认分销商所能购买的数量等于门票的总库存。现在出现的问题是,当分销商所能购买的该门票的数量为0时,只要该门票的总库存大于0,仍然可以购买该门票,即设置的数量购买限制存在bug。
  收到这样的消息,我一定时间测试该功能是否正常,结论如客户所说,确实存在这样的问题,所以我就检查所写的程序,程序是这个判断的:
$company_ku_count = M('company_kucun')->where(Array('px_id'=>$px_id,'company_id'=>$member_main_id))->getField('ku_count');//得到分销商票型的授权数量
if($company_ku_count==’’){...}//即没有设置分销商的门票数量,则分销商可以购买的数量为门票的总数量。
elseif($company_ku_count>0){...}//则设置分销商的数量,最大可购买数量为$company_ku_count张。
看代码似乎没问题,因为两种情况都已经做了判断,所以花了不少时间在找bug,终于发if($company_ku_count==0){...}时,if($company_ku_count==’’){...}同样成立,也就是说0是等于空字符的,尝试使用if(emtpy($company_ku_count))来判断,同样得到的结果也是一样,这下我有点懵,因为当$company_ku_count=0或$company_ku_count=’’时,echo emtpy($company_ku_count)都输出1,所以就上网查找如何才能区别0与空字符,最终找到另一个检测变量的函数isset,isset与empty最大的区别是,一个变量$company_ku_count存在等于null,即echo isset($company_ku_count) ,输出空字符,而echo empty($company_ku_count)输出1。并且只要$company_ku_count存在且不等于null,则输出1. 例如$company_ku_count=100,则 isset($company_ku_count)输出1,而emtpy($company_ku_count)输出空字符。
 由上面的结论可以解决这个问题了,只要用$isok = isset($company_ku_count),if($isok==’’){...}//即分销商没有设置存在的情况,而其他情况则是已经设置了购买数量限制,这样就解决客户上所说的Bug了,事情也到此为止。
为了学习isset与emtpy的知识,我们可以回顾下两者的区别:
 
isset的返回值如下图所示:

结果


emtpy返回值如下图所示:

结果2
如没特殊注明,文章均为方维网络原创,转载请注明来自https://www.szfangwei.cn/news/5313.html