intval($ var)== strval($ var)返回true

时间:2013-08-21 12:42:56

标签: string int

给出的例子非常简单,所以我认为它不需要任何解释。 我找不到任何可以解释这种行为的文档的参考资料,我也发现了一些相关的工作原理,所以你真的不需要费心去寻找它们(尽管提前感谢)。

我真的很想,如果有人可以解释这个.....对我来说没有任何意义:

// comma separated IDs to later use in SQL statement
$var = '10,20,30,40,743,102394';

$multi_intval = intval($var); // same with (int) $var
$multi_string = strval($var); // same with (string) $var
var_dump($multi_intval, $multi_string, $multi_intval == $multi_string);

    // result
    int(10) string(22) "10,20,30,40,743,102394" bool(true)

10如何等于22个strlen字符串?

1 个答案:

答案 0 :(得分:0)

我刚试过这个寻找另一个答案,所以即使它已经老了,我会给出一个答案,以防其他人碰到它。

来自php docs hereIf you compare a number with a string or the comparison involves numerical strings, then each string is converted to a number

因此你的比较intval($var) == strval($var)改为intval($var) == intval(strval($var)),当然是相等的(我不知道用什么语言将字符串改为整数,上面是只是视觉表现)。如果您确实需要知道它们是否相同,请使用===