php中0,空,null和false的区别

更新日期: 2019-12-17 阅读: 2.7k 标签: php

代码

$a =  0;
$b="0";
$c= ‘‘;
$d= null;
$e = false;

echo "5个变量-原始测试类型";
    var_dump($a);//int 0
    var_dump($b);//string ‘0‘
    var_dump($c);//string ‘‘
    var_dump($d);//null
    var_dump($e);//boolean false

echo "<h4>empty测试</h4>";
    var_dump(empty($a));//true
    var_dump(empty($b));//true
    var_dump(empty($c));//true
    var_dump(empty($d));//true
    var_dump(empty($e));//true

echo "<hr>";
    var_dump(isset($a));//true
    var_dump(isset($b));//true
    var_dump(isset($c));//true
    var_dump(isset($d));//【false】 见结论一
    var_dump(isset($e));//true

echo "<h4>(==)双等式测试</h4>";
    var_dump($a == $b);//true
    var_dump($a == $c);//true
    var_dump($a == $d);//true
    var_dump($a == $e);//true !!

    var_dump($b == $c);//【false】见结论二
    var_dump($b == $d);//【false】见结论二
    var_dump($b == $e);//true

    var_dump($c == $d);//true
    var_dump($c == $e);//true

echo "<h4>(===)三等式测试</h4>";
    var_dump($a === $b);//false
    var_dump($a === $c);//false
    var_dump($a === $d);//false
    var_dump($a === $e);//false

    var_dump($b === $c);//false
    var_dump($b === $d);//false
    var_dump($b === $e);//false

    var_dump($c === $d);//false
    var_dump($c === $e);//false


总结:

对于 【0 ;‘0‘ ;‘‘ ;null; false】五种类型
empty操作以上五个变量,都返回false
强等于 (===) 比较 都为false,同强语言结果(三个等号比较不但要比较值,而且要比较类型)
但对于 (==) 比较,需要注意string类型,涉及到底层结构与类型转换


结论一:关于变量类型的理解

1.null为不存在之意:php底层的zval空间里(结构见下方)没有存其value值,只存储了一个type标志其 IS_NULL(所以解释了 empty(null)=true,isset(null)=false ,isset(‘‘)=true)
2.【0 ; ‘0‘ ; ‘‘ ; false 】:这四个为存在,php底层是开辟zval空间存储,有value,有type


结论二:

1、string ‘0‘与 string ‘‘ 不相等,(想一下就明白,同类型比较【1个长度】的字符串怎么可能 等于 【0个长度】 的字符串)
2、int 0 却和 string ‘‘ 空相等,(非同类形比较,php会做类型转换)
3、string ‘0‘ 与 null 不相等,int 0 与 null 相等


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/9322

相关推荐

php 定时任务

google百度了下,PHP任务大体上可以分为三类,最近需要去定时请求数据,然后分析之后 指定相应的文本 通过socket广播给用户。具体的分析 制定文本的业务 不复杂。 使用curl 请求数据 。但是对于定时任务这一块怎么使用都不行。

解决PHP剪切缩略图生成png,gif透明图时,黑色背景问题

后台上传png图片透明底变成黑色的问题,php缩放gif和png图透明背景变成黑色的解决方法,本文讲的是php缩放gif和png图透明背景变成黑色的解决方法, 工作中需要缩放一些gif图然后在去Imagecopymerge

PHP如何打造一个高可用高性能的网站呢?

PHP如何打造一个高可用高性能的网站呢?我们来分析分析高性能高可用的系统。简而言之,采用分布式系统,分布式应用和服务,分布式数据和存储,分布式静态资源,分布式计算,分布式配置和分布式锁。负载均衡,故障转移,实现高并发。

php后台运行以及定时任务的4种实现原理以及代码

后台任务在我们php编程中虽然用的不是很多甚至很多php程序员都没听过甚至觉得后台运行是不可能实现的,本人因为项目需求多次演变在这里分享给大家:写成网页浏览的形式打开即执行然后用http监控

php获取客户端ip地址或者服务器ip地址

在PHP获取客户端IP时,常使用REMOTE_ADDR,但如果客户端是使用代理服务器来访问,那取到的是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用HTTP_X_FORWARDED_FOR

php 守护进程

首先需要解释的是什么是守护进程。守护进程就是在后台一直运行的进程。比如我们启动的httpd,mysqld等进程都是常驻内存内运行的程序。

PHP中常用加解密方式

PHP中使用OpenSSL生成RSA公钥私钥及进行加密解密示例(非对称加密),php服务端与客户端交互、提供开放api时,通常需要对敏感的部分api数据传输进行数据加密,这时候rsa非对称加密就能派上用处了,下面通过一个例子来说明如何用php来实现数据的加密解密

PHP Primary script unknown 终极解决方法

相信很多配置php环境的都遇到过这个恼人的问题:浏览器访问php文件,返回来 File not found、查看/var/log/nginx/error.log ,有 Primary script unknown,类似如下:

PHP 是 Web 开发最好的语言!

PHP 一直受到全球 Web开发人员的青睐,它为人们提供了创建高度交互性和直观的网站和Web应用程序的良好方式,包括语言的广度、深度,且执行简单。以下五个原因,我们来说明PHP是世界 Web开发的最佳语言

PHP多进程引发的msyql连接数问题

业务中有一块采用了PHP的pcntl_fork多进程,希望能提高效率,但是在执行的时候数据库报错,MySQL能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!