`

往事重提:php弱类型之比较

    博客分类:
  • php
阅读更多

php是弱类型语言, 比如 变量$v的值为: 0 , false , null , '' ,""  ,未定义

if(!$v) echo "true";

都会输出true,  所以这些条件都为假, 这在其他一些语言中是不能容忍的。

 

于是我们在日常开发中也慢慢的习惯了这种弱类型。

 

以至于我们在判断字符串相等时,也会直接忽略了0的存在直接比较, 比如:

$v = array(0=>"a", "type"=>"b",1=>"c");

$useArr = array();

foreache($v as $key=>$value){

   if($key == 'type'){ continue;}

   $useArr[] = $value;

}

 

我们本来只想过滤掉键值为type的数据, 但结果不小心会使键值为0的数据也过滤掉了。

原因是0键值为整形,而与字符串比较时,会先将字符转化为整形,没有数字开头的字符串一般都是转化为0,因此这里需要用 === 来替代,这样才万无一失。

小心小心,切记切记, :)

 

如果是强类型语言在编译时就会提示错误, 不能直接比较。

 

解释型与编译型,弱类型与强类型, 各有千秋啊。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics