发现如果code的值为null时,也能通过。小马虎导致大损失,

  我们很多程序员可能对于0,null,空,false这几个的区别到底是什么可能不太明白,特别是在判断时会发现0,false都是没问题的,下面我们来看个实例。

  例

  代码如下复制代码

  <?php

  $test=0;

  if($test==''){

  echo '<br />在php中,0即为空'; //被输出

  }

  if($test===''){

  echo '<br />在php中,0即为空'; //不被输出

  }

  if($test==NULL){

  echo '<br />在php中,0即为空'; //被输出

  }

  if($test===NULL){

  echo '<br />在php中,0即为空'; //不被输出

  }

  if($test==false){

  echo '<br />在php中,0即为空'; //被输出

  }

  if($test===false){

  echo '<br />在php中,0即为空'; //不被输出

  }

  ?>

  原因是在PHP中变量是以C语言的结构体来存储的,空字符串和NULL,false都是以值为0存储的,其中这个结构体有个zend_uchar type;这样的成员变量,他是用来保存变量的类型的,而空字符串的类型是string,NULL的类型是NULL,false是boolean。

  这一点可以用echo gettype('');和echo gettype(NULL);来打印看看!而===运算符是不单比较值,还有比较类型的,所以第三个为false!

  所以可以这样说===是等于下面的函数:

  代码如下复制代码

  function eq($v1, $v2) {

  if($v1 == $v2 && gettype($v1) == gettype($v2)) {

  return 1;

  } else {

  return 0;

  }

  }

  所以空字符串(''),false,NULL和0是值相等而类型不一样!

  注意:

  NULL是一种特殊的类型.

  两种情况下为NULL

  1. $var = NULL;

  2. $var;

  3.""、0、"0"、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。

  总结

  从上面实例我们可以看得出null,0,false是假,而''是一个空字符串并不是空值。

转载于:https://blog.51cto.com/liuqh/1831660

关于if 判断等于0 和‘0’的问题相关推荐

  1. python0.1+0.2不等于0.3_为什么0.1 + 0.2不等于0.3?

    原标题:为什么0.1 + 0.2不等于0.3? 0.1 + 0.2不等于0.3这是一个普遍的问题,例如在JS控制台输入将得到0.30000000000000004 在python的控制台也是输出这个数 ...

  2. 如何解决JavaScript中0.1+0.2不等于0.3

    原文转载自:https://www.cnblogs.com/weshare/archive/2018/02/20/8455470.html >console.log(0.1+0.2===0.3) ...

  3. matlab if m不等于0,matlab问题clearfor a=0.1:0.1:50for b=0.1:0.1:20for m=0.1:0.1:5

    来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2021/03/23 06:16:09 matlab问题 clear for a=0.1:0.1:50 for b=0.1:0.1:20 for ...

  4. 解决JS中0.1+0.2不等于0.3

    console.log(0.1+0.2===0.3)// true or false?? 在正常的数学逻辑思维中,0.1+0.2=0.3这个逻辑是正确的,但是在JavaScript中0.1+0.2!= ...

  5. JS 0.1+0.2不等于0.3的问题

    在正常的数学逻辑思维中,0.1+0.2=0.3这个逻辑是正确的,但是在JavaScript中0.1+0.2!==0.3,这是为什么呢?这个问题也会偶尔被用来当做面试题来考查面试者对JavaScript ...

  6. 漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3 ?

    作者 | 漫话编程 来源 | 漫话编程(ID:mhcoding) 为什么当我们使用电脑浏览器计算0.2+0.1的时候,解决却是0.30000000000000004,而 0.1+0.6 的结果却是 0 ...

  7. 有小数点是什么类型_为什么0.1+0.2不等于0.3?原来编程语言是这么算的……

    打开你的 Python,输入「0.1+0.2=」,结果是多少?0.30000000000000004 对不对?为什么结果不是 0.3?本文作者给出了详细的解释. 选自Medium,作者:Parul M ...

  8. java 怎么判断1_1.0_1.00是同一个数_php如何优雅的判断 0.0/0.00/0.000 是否为空? 测试过用empty函数不行...

    php如何优雅的判断 0.0/0.00/0.000 是否为空? 测试过用empty函数不行 如何优雅 ? if ( (int) $number == 0) echo 'empty'; if ( flo ...

  9. 为什么计算机中0.2+0.1不等于0.3!?

    为什么当我们使用电脑浏览器计算0.2+0.1的时候,解决却是0.30000000000000004,而0.1+0.6的结果却是0.7呢? 这个问题其实一直是一个经典的问题,甚至有一个网站的域名就是ht ...

最新文章

  1. 「译」在JavaScript中将值转换为字符串的5种方法
  2. golang sync.Mutex 互斥锁 使用实例
  3. Android客户端和服务端如何使用Token和Session
  4. 百练OJ:4150:上机
  5. 150万元重奖!阿里软件供应链安全大赛正式启动
  6. android 动态壁纸仿抖音,Android 仿抖音实现动态壁纸
  7. 万字详解OpenDRIVE文件
  8. leetcode链表刷题 python
  9. 很多人不理解这个参数的 nl,nh:ESC * m nL nH d1... dk
  10. 【资损】系统迭代过程中的兼容性设计
  11. 暑假提高7--G - 手游大佬 (细节处理模拟)
  12. 计算机语言学考研考什么,语言学及应用语言学考研有哪些内容-考研经验
  13. python 实现数据结构八种内部排序算法
  14. 计算机单片机原理考试题库,单片机原理及应用试题库-淮阴工学院
  15. 人工只能对php的影响,阿西莫夫眼中的人工智能
  16. Mysql如何才能走索引排序?
  17. 分布式 PostgreSQL 集群(Citus)官方示例 - 多租户应用程序实战
  18. 蠕虫病毒html,HTML 感染 DropFileName = “svchost.exe” Ramnit 蠕虫病毒 查杀解决办法
  19. 产品 - 收藏集 - 掘金
  20. MFC计算器项目——单位换算模块

热门文章

  1. 多方安全计算(MPC)原理简介
  2. excel操作练习_你见过最好的Excel教程有哪些?
  3. leetcode那些算法都用在了哪里
  4. DDD(领域驱动设计)系列之二-应用架构
  5. linux httpd 开机启动脚本,httpd服务如何开机启动
  6. Python爬虫入门_之urllib2urllib
  7. ElasticSearch的安装过程
  8. nginx设置http强制跳转https
  9. binlog和redo log的区别
  10. 招聘笔记:机器学习基础知识(19道题,有参考答案)