深入PHP中慎用双等于(==)的详解

yipeiwu_com6年前PHP代码库

PHP比较运算符出现的频率实在是太高了,尤其是 ==
if(a == b){
// do something
}
但是,你真的掌握了 == 了吗?细节很重要!
来看下面的代码,说出你认为正确的答案
var_dump('  123fg456'==123);
var_dump('some string' == 0);
var_dump(123.0 == '123d456');
var_dump(0 == "a");
var_dump("1" == "01");
var_dump("1" == "1e0");
先想出你的答案,然后再运行一次看看。如果答案没有差错,那么恭喜你,基础知识很扎实。

解释:
如果比较一个整数和字符串,则字符串会被转换为整数。如果比较两个数字字符串,则作为整数比较。此规则也适用于 switch 语句。
特别注意,字符串转换为整数时,是从左到右,直到遇到非数字字符为止。也就是说 '123abc456' 会被转换成 123,而不是 123456。另外字符串开始的空格会被忽略,比如 '   234abc' 转换为 234。
下面附上松散比较和严格比较的对照表
松散比较与严格比较对照表

相关文章

php中显示数组与对象的实现代码

1、 使用 print_r ( $array/$var ) print 是打印的意思,而r则取自Array的单词,那么该函数的功能就是打印数组内容,它既可以打印数组内容,也可以打印普通的...

PHP微信开发之微信录音临时转永久存储

最近做开发的时候碰到了这个问题,甲方希望用户在微信端的录音能够一直有效。就是随时打开好友的分享就能听到好友的录音。可在微信官方开发手册上查到微信录音文件上传后只能在微信端保留3天时间,3...

PHP json格式和js json格式 js跨域调用实现代码

先看一个js函数 复制代码 代码如下: function jsontest() { var json = [{'username':'crystal','userage':'20'},{...

PHP IE中下载附件问题解决方法

重点: 1、在IE中下载附件之前要清空缓存。 2、中文文件名要用urlencode编码。 复制代码 代码如下: Header("Pragma: "); //不加的话,IE中会提示目标主机...

攻克CakePHP系列二 表单数据显示

攻克CakePHP系列二 表单数据显示

首先建立数据库cake_ext,并执行如下sql文: CREATE TABLE `companies` (   `id` ...