0=='aa'的结果为什么是true!!!

下面是一道测试题

if(0=='aa'){  
  echo "yes";  
}else{  
  echo "no";  
}

答案是 yes 为什么会这样?一个int型的0 和一个字符串怎么可能会是0? 因为这里涉及到了知识点:PHP的类型转换规则 1.如果是一个数字与一个字符串进行比较,那么会把字符串转换为数字再比较 2.字符串的转换规则,若字符串以数字开头,则取开头数字作为转换按结果,若无,则取0

接下来,出一个问题:

if("0"=="000"){  
    echo "yes";  
}else{  
    echo "no";  
}

答案是啥?对,没错,仍然是yes。为啥? 你猜想,可能是因为字符串被转换为了int型? 那么我们给强制转换一下试试呢?

if((string)"0"==(string)"000"){  
    echo "yes";  
}else{  
    echo "no";  
} 

没错,还是yes

对比多种类型,比较运算符按下表比较(按顺序)。

比较多种类型

运算数 1 类型 运算数 1 类型 结果
null或者 String String 将 null 转换为'',进行数字和词汇比较
bool 或者 null 任何其它类型 转换为bool,FALSE 小于TRUE
Object Object 内置类可以定义自己的比较 ,不同类不能比较,相同类和数组同样方式比较属性(PHP4中),PHP5有其自己的说明
string,resource或number string,resource或number 将字符串和资源转换成数字,按普通数学比较
array array 具有较少成员的数组较小,如果运算数1中的键不存在于运算数2中则数组无法比较,否则挨个值比较
array 任何其它类型 array 总是更大
array 任何其它类型 object 总是更大
联系我们

邮箱 626512443@qq.com
电话 18611320371(微信)
QQ群 235681453

Copyright © 2015-2024

备案号:京ICP备15003423号-3