本帖最后由 glovej 于 2011-03-18 15:45:42 编辑

解决方案 »

  1.   

    这儿存在当数据类型不同时,一个数据类型的转换的问题,在弱等于也就是两个等号的情况下,数据类型会被强制转换,"null"、""、0,这三个数据在进行比较的时候都会被强制转换成同一个数据类型——"null"是特殊类型,转换成字符型的时候就成了"",转换成数值的时候就是0了,在布尔型里面相当于false。
    在post之后,所有数据都被默认为字符串了,于是$a与$b的比较,就变成了字符串""和字符串"0"的比较,此时就不同了,下面的代码能解决你的疑惑<?
    $submit=$_POST['submit'];
    $a=$_POST['a'];
    $b=$_POST['b'];
    if(isset($submit))
    {
    $c='';$d=0;
    if($a==$b)
    echo "yes";
    else
    {
    echo "no";
    echo "<br>a=$a,b=$b<bR>";
    echo gettype($a)."<br/>";
    echo gettype($b)."<br/>";
    }
    if($a==$c)
    echo "a=c<br>";
    if($d==$b)
    echo "d=b<br>";
    if($c==$d)
    echo "c=d<bR>";
    if($a==$b)
    echo "a=b";
    }
    echo "<form method=post action=test.php>";
    echo "<input type=text name=a value=''>";
    echo "<input type=text name=b value=0>";
    echo "<input type=submit name=submit></form>";
    ?>
      

  2.   

    前面三条是弱类型值比较,最后一个是数组索引机制~~PHP虽然认为弱类型比较下的0和空相同,但是可以分辨出数组的索引为空和为0是不同的。
      

  3.   

    没啥, 
    字符串比较是直接比,所以"0"!=""和数字比较的时候要转换为数字,
    所以"0"==0,
    "x"==0
    "asfasf"=0
    "啊发送附件"=0
    ....