我这样:
$a = "fdsfadsafdsaf";
if($a =="" || $a ==0)
{
    echo 123;
}
这里居然输出的结果是123!!!
为啥会这样啊,我好多地方都这样用了,那全乱套了
想不通啊,想了一个晚上了这样的话,就没错了:
$a = "fdsfadsafdsaf";
if($a ==="" || $a ===0)
{
    echo 123;
}
却想不通啊;
大伙儿帮俺想想,感谢啦

解决方案 »

  1.   

    不怪啊。 
    if($a =="" || $a ==0) 
    第一个条件$a == ""是不成立的,但是第二个条件$a ==0是成立的。0是整型$a = "fdsfadsafdsaf"转成整型确实是0 如果是$a =="0"就不成立了
      

  2.   

    其实这算是PHP的好处吧,PHP定义变量的时候无需定义变量类型,使用时会灵活转换的。
      

  3.   

    另外还有一个问题:
    我数据库很多字段下为空值,我用这样的来做判断了:if($x ==0 || $x =="")
    貌似我错了我好想进入了一个误区,以为$x ==0也可以用来判断是否空值汗,惭愧啊
      

  4.   

    其实可以更简单 if(!$x) 既包含了为0也包含了""
      

  5.   

    恩,其实is_unll也可以,还有is_empty,这个函数颇有争议。
      

  6.   

    在smarty中,我也也像这样用了:{if $x ==0 || $x ==""} 
    唉,问题大了,要改死人了
      

  7.   

    $a = "53fdsfadsafdsaf";
    if($a =="" || $a ==53)
    {
        echo 123;
    } 同样输出123呵呵
      

  8.   

    $a = "53fdsfadsafdsaf"; 
    if($a =="" || $a ==53) 

        echo 123; 

    ==
    $a = "53fdsfadsafdsaf"; 
    if($a =="" || intval($a) ==53) 

        echo 123; 

    因为53是数字,字符串要强行转换一下.这个代码很容易出错.你应该这样写就可以了
    $a = "fdsfadsafdsaf"; 
    if(empty($a)) //or if(!$a)

        echo 123; 

      

  9.   

    执行if里面的语句是$a==0导致的
    原因:当变量要与数字比较时,会转换为int类型去比较
    结果:$a = "fdsfadsafdsaf";转换为int类型后为0,故$a==0成立