发牌SO 发表于 2017-4-3 11:46:20

往事重提: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,因此这里需要用 === 来替代,这样才万无一失。
  小心小心,切记切记, :)
  如果是强类型语言在编译时就会提示错误, 不能直接比较。
  解释型与编译型,弱类型与强类型, 各有千秋啊。
页: [1]
查看完整版本: 往事重提:php弱类型之比较