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-2022

备案号:京ICP备15003423号-3