PHP下==与===区别
来源:互联网 发布:平面图转换立体图软件 编辑:程序博客网 时间:2024/06/05 02:54
三个要点:
- 当比较双方同类型时二者没有区别
- 当双方类型不一致时,==的比较结果无法预知,===为false
- null也是一种类型
先来个样例
if(1 == "1"){ echo "1 == 1 is true".PHP_EOL;}else{ echo "1 == 1 is false".PHP_EOL;}
他的输出结果将是true,此时你一定觉得没毛病,PHP时弱类型的语言,1就是等于"1",但是我们通常不建议这么做,原因请看下面的实例
if(1 == true){ echo "1 == true is true" . PHP_EOL . "gettype(1) == " . gettype(1) . PHP_EOL . "gettype(true) == " . gettype(true) . PHP_EOL . PHP_EOL;}else{ echo "1 == true is false" . PHP_EOL;}if("test" == 0){ echo "test == 0 is true" . PHP_EOL . "gettype(\"test\") == " . gettype("test") . PHP_EOL . "gettype(0) == " . gettype(0) . PHP_EOL . PHP_EOL;}else{ echo "test == 0 is false".PHP_EOL;}
注释:gettype(var)能够以字符串的形式返回var的数据类型
上方代码输出结果如下
1 == true is true
gettype(1) == integer
gettype(true) == boolean
test == 0 is true
gettype("test") == string
gettype(0) == integer
看到上面1 == true没毛病,但是他们两个的类型时不一样的,true时boolean类型,php中任何数值非零即为true,0为false。因此就引入了上面样例中第二部分代码和第二部分输出的问题,由于0为false,而字符串参与比较时,由于无法直接与boolean比较,string都将被处理为0,这时候,所有的string都将被处理为0。
此外,你如果尝试(0 == null)他将为true,但是 "test" == null却为false。因此看得出来,即使a==b,b==c,但a==c是不确定的,因此,为了养成良好的变成习惯,避免出现不可预知的错误,我们应该尽量使用===。
===的三个要点:
- 两者类型不等为false
- 两者值不等为false
- 两者类型和值都相等为true
阅读全文
0 0
- PHP下==与===区别
- PHP “===”与“==”区别
- PHP中“!==”与“!=”的区别
- PHP 对象的克隆(clone)与引用(=)的区别
- PHP中使用&赋值与=赋值的区别
- php中的<?= ?>和<?php ?>的区别
- php中“=>”和 “->” 区别
- 简单说下equers()与==区别
- <? ?>、<?= ?>与<?php ?>
- php: return与=区别及参数中$var=\'d\'与$var区别 => 难题已解
- MVC <%%>与<%=%>与区别
- %# 与 %= 的区别
- php中!=和!== 区别
- PHP基础学习:'=='和'==='的使用方法与区别
- PHP中两个等号(“==”)与三个等号(“===”)的区别
- php中的<?= ?>、<??>和<?php ?>有什么区别么?
- php中的<?= ?>和<?php ?>有什么区别么?
- PHP的"::"、"->"和"=>"的区别
- scrapy遇到的坑
- JavaScript-内存空间
- ITSOM企业级应用SaaS平台——基础信息管理
- 直通BAT--数据结构与算法十(排列组合)
- mysql分区功能详细介绍,以及实例
- PHP下==与===区别
- python计算机视觉-聚类学习
- 浅谈MVC、MVP、MVVM架构模式的区别和联系
- 机器学习-学习笔记 学习总结归纳(第七周)
- PPT很难?看完这个没有搞不定的PPT
- HDU 2017多校联赛-Maximum Sequence
- 非安装版mysql配置及可能遇到问题解决(博主安装5.7.13版本)
- SDKMAN 软件开发工具包管理器
- CentOS7下安装python-pip