<?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;
}
}

php中0与空 Null false的区别的更多相关文章

  1. (基础篇) php中0与空 Null false的区别

    <?php $test=0; if($test==''){ echo '<br />在php中,0即为空'; //被输出 } if($test===''){ echo '<br ...

  2. PHP中0、空、null和false的总结

    php中很多人还不懂php中 0 , '' , null 和 false 之间的区别,这些区别有时会影响到数据判断的正确性和安全性,给程序的测试运行造成很多麻烦.另外在面试题中也会遇到这些问题,如下: ...

  3. jquery 中cache为true与false 的区别

    $.ajax({type: "get",cache: false,url: url,success: function (msg) { }}); cache为true与false ...

  4. 关于JavaScript中0、空字符串、'0'是true还是false的总结

    最近被问到关于js中空字符串是true还是false得问题,一时间没想起来,现在在chrome的console面板上输出代码测试一下. "" == false 结果是true    ...

  5. 判断 0 和 '' 以及 empty null false的关系

    if('safdasefasefasf'==0) { echo "该字符串转换为数字 等于 0 <br/>"; } //output:该字符串转换为数字 等于零. 这是 ...

  6. asp.net,C#操作数据库DataTable关于空null的判断

    double d=0;if(!Convert.IsDBNull(DataTable.Rows[i][m])){    string str=DataTable.Rows[i][m].ToString( ...

  7. C# DBNULL与NULL之间的区别【转】

    null是.net中无效的对象引用.DBNull是一个类.DBNull.Value是它唯一的实例.它指数据库中数据为空(<NULL>)时,在.net中的值.null表示一个对象的指向无效, ...

  8. Javascript中那些你不知道的事之-- false、0、null、undefined和空字符串

    话不多说直接进入主题:(如果有写的不对的地方欢迎指正) 我们先来看看他们的类型分别是什么: typeof类型检测结果 结论:false是布尔类型对象,0是数字类型对象,null是object对象,un ...

  9. php中0,空,null和false之间区别

    $a = 0; $b="0"; $c= ''; $d= null; $e = false; echo "5个变量-原始测试类型"; var_dump($a);/ ...

随机推荐

  1. 使用Unity制作的一个望远镜特效,在狙击手游戏中非经常见

    仅仅须要编写一个脚本文件,然后就能随意设置放大缩小的速度.以及程度.

  2. redis客户端使用密码

    ./redis-cli  -h 127.0.0.1 -p 6379 -a password

  3. Python 对目录做遍历

    os.walk() 用于遍历目录里的文件,或者说迭代目录里的文件 ??? 什么意思?比如 Linux 中 find /data -type f 表示找出 /data 目录下的所有文件,它会先找出 /d ...

  4. jquery ajax返回html乱码解决

    情景: index.html 使用如下代码访问另外一个html片段 1 2 3 4 5 6 7 8 9 10 11 12 13 function rewritedata(id){     var uu ...

  5. js中如何删除json对象的某一个选项

    我有一个这样一个对象,getData, 但是我不想要每一项的id,那怎么去删除呢(使用delete)? getData.map((item) =>{ delete item["id&q ...

  6. springjdbc的批量操作

    这里主要是看的官方文档,如何翻译: NamedParameterJdbcTemplate The NamedParameterJdbcTemplate class adds support for p ...

  7. JS-获取class类名为某个的元素-【getClass】函数封装

    原理: /*  * 根据class获取元素. * 原理是,取出oparent下的所有元素,组成数组,然后遍历类名,全等判断.*/ 源码 1 function getClass(oParent,clsN ...

  8. Android 菜单动态变化【添加或去除】

    <menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android: ...

  9. bootstrap之表单

    一.表单布局 向父 <form> 元素添加 role="form". 把标签和控件放在一个带有 class .form-group 的 <div> 中.这是 ...

  10. WEB安全第三篇--控制请求的艺术:CSRF和SSRF

    零.前言 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件.底层安全.漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的pay ...