<?
$a='222asd333db';
$b=intval($a);
var_dump($a==$b);
?>
大家猜猜看var_dump能打印出什么值?这是为什么??

解决方案 »

  1.   

    给出更多结果
    <?
    $a='222asd333db';
    echo '$a : ';
    var_dump($a);
    echo '<br>';echo '$b : ';
    $b=intval($a);
    var_dump($b);
    echo '<br>';echo '$a==$b result: ';
    var_dump($a==$b);
    ?>结论为:$a : string(11) "222asd333db"
    $b : int(222)
    $a==$b result: bool(true) 这是为什么???
      

  2.   

    $a = '222asd333db';
    $b = intval($a); //intval 只取串前面的数字,所以只能是 222
    var_dump($a==$b); //比较时需要转换运算符两边为同一类型,所以为 truevar_dump($a===$b); 就不是了
      

  3.   

    var_dump($a===$b);这个的结果自然是false了。但我的应用是不能用===只能用==的。例如我想判断
    $a='222222' 的时候
    var_dump($a==intval($a))  期待的的值是true; 若使用了===因为比较符前后的类型不一致而为false;$a='222222bb'的时候
    var_dump($a==intval($a)) 期待的值是false;所以,这里不能使用===。我不明白的是即便是用==这个,为什么两个变量的长度和类型都不同,为什么会相等?????
      

  4.   


    你这个例子举的就不恰当了
    php语法不严格 但是对于你编程而言  比较必然要基于一个前提
    你到底是要比较字符串还是要比较数值?
    你把字符串转化为数字类型后 又将这个数值类型与字符串比较  那你想得到什么???
    你如果做java这类语言的话 会这样进行比较吗? 把string 与 int进行比较? 语法错误啊。
    php语法弱而已 你自己写程序不能这么写吧