if("abc" == 0) echo 'ghost!?';
if("abc" == "0") echo 'really a ghost!!!';如要严格判定,应该用===

解决方案 »

  1.   

    虽然他们的类型是不相同,但是内容相差也巨大啊,一个是0,一个是list23412412423sdfasdf,他们是怎么可能相等的???
      

  2.   

    因为类型不一致  首先会把字符串转成int类型  (int)list23412412423sdfasdf 的值就为0  所以相等
    建议你用===  既判断值等还判断类型一致
      

  3.   

    看手册 :  附录 O. PHP 类型比较表关于松散比较(==)和严格比较(===)的两个表格.
      

  4.   

    那么为什么int型不转换成字符串呢?
      

  5.   

    运算的优先级和结合顺序
    在==是从左到右,所以string转int
      

  6.   

    <?php
    if(0 == "abc") echo 'ghost!?';
    if("abc" == "0") echo 'really a ghost!!!';?><?php
    if( "abc"==0) echo 'ghost!?';
    if("abc" == "0") echo 'really a ghost!!!';?>
    测试了是一样的.
    所以解释的好像不对.
      

  7.   

    不神,请楼主认真阅读 PHP手册
      

  8.   

    数字类型(整形或者浮点型)和字符串比较:字符串转换成数字类型进行比较。
    两个字符串比较:
    1,如果两个字符串都是数字字符串,那么将会把这两个字符串转换成数字类型进行比较;
    2,其他的情况按照字符串的ascii码进行比较;
      

  9.   

    各位请再仔细的看一下我的程序好吗?
    .....
    $t="list23412412423sdfasdf"; 
    //如果$t和$this->thestyle相等
    if ($t == $this->thestyle){ 
        //输出$this->thestyle
        var_dump($this->thestyle); 
        //用:进行隔离
        echo " : "; 
        //输出$t
        var_dump($t); 
        exit(); 
    ...... 
    输出结果是: 
    int(0) : string(22) "list23412412423sdfasdf"  
    大家看结果:$this->thestyle的输出结果是整型 0
    而$t的输出结果是字符串 list23412412423sdfasdf
    我当然知道PHP的严格类型判断(===),但是看我的IF语句,我判断的是 “整型 0”  是否和 “字符串list23412412423sdfasdf”是否相等,如果相等,那么才输出相关的内容。PHP在这里认为“整型 0”  和 “字符串list23412412423sdfasdf” 是相等的,很显然这个判断是个错的。
      

  10.   

    SORRY
    我明白了,马上结贴