关于if 判断等于0 和‘0’的问题
发现如果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’的问题相关推荐
- 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的控制台也是输出这个数 ...
- 如何解决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) ...
- 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 ...
- 解决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!= ...
- JS 0.1+0.2不等于0.3的问题
在正常的数学逻辑思维中,0.1+0.2=0.3这个逻辑是正确的,但是在JavaScript中0.1+0.2!==0.3,这是为什么呢?这个问题也会偶尔被用来当做面试题来考查面试者对JavaScript ...
- 漫话:如何给女朋友解释为什么计算机中 0.2 + 0.1 不等于 0.3 ?
作者 | 漫话编程 来源 | 漫话编程(ID:mhcoding) 为什么当我们使用电脑浏览器计算0.2+0.1的时候,解决却是0.30000000000000004,而 0.1+0.6 的结果却是 0 ...
- 有小数点是什么类型_为什么0.1+0.2不等于0.3?原来编程语言是这么算的……
打开你的 Python,输入「0.1+0.2=」,结果是多少?0.30000000000000004 对不对?为什么结果不是 0.3?本文作者给出了详细的解释. 选自Medium,作者:Parul M ...
- 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 ...
- 为什么计算机中0.2+0.1不等于0.3!?
为什么当我们使用电脑浏览器计算0.2+0.1的时候,解决却是0.30000000000000004,而0.1+0.6的结果却是0.7呢? 这个问题其实一直是一个经典的问题,甚至有一个网站的域名就是ht ...
最新文章
- 「译」在JavaScript中将值转换为字符串的5种方法
- golang sync.Mutex 互斥锁 使用实例
- Android客户端和服务端如何使用Token和Session
- 百练OJ:4150:上机
- 150万元重奖!阿里软件供应链安全大赛正式启动
- android 动态壁纸仿抖音,Android 仿抖音实现动态壁纸
- 万字详解OpenDRIVE文件
- leetcode链表刷题 python
- 很多人不理解这个参数的 nl,nh:ESC * m nL nH d1... dk
- 【资损】系统迭代过程中的兼容性设计
- 暑假提高7--G - 手游大佬 (细节处理模拟)
- 计算机语言学考研考什么,语言学及应用语言学考研有哪些内容-考研经验
- python 实现数据结构八种内部排序算法
- 计算机单片机原理考试题库,单片机原理及应用试题库-淮阴工学院
- 人工只能对php的影响,阿西莫夫眼中的人工智能
- Mysql如何才能走索引排序?
- 分布式 PostgreSQL 集群(Citus)官方示例 - 多租户应用程序实战
- 蠕虫病毒html,HTML 感染 DropFileName = “svchost.exe” Ramnit 蠕虫病毒 查杀解决办法
- 产品 - 收藏集 - 掘金
- MFC计算器项目——单位换算模块