为什么这总是返回true
:
$s = '334rr';
$i = (int)$s;
if ($i == $s) {
echo true;
} else {
echo false;
}
如果我回显$i
,则会提供334
的值,这与$s
的{{1}}不同。
答案 0 :(得分:4)
来自the manual:
如果您将数字与字符串进行比较或比较涉及数字字符串,则每个字符串都会转换为数字,并且数字会进行比较。
因此:($i == $s)
与您提供的值的($i == (int)$s)
相同。
使用===
来避免类型杂耍。
答案 1 :(得分:2)
当使用==
将字符串与整数进行比较时,字符串将尝试使用整数。
答案 2 :(得分:2)
试试这个
$s = '334rr';
$i = intval($s);
if ($i == $s) {
echo true;
} else {
echo false;
}
答案 3 :(得分:0)
不建议将字符串与int进行比较。您应该使用===
代替,它将验证相同的数据类型以及相同的值。
答案 4 :(得分:0)
当与另一个整数($ i)进行比较时,PHP将$ s字符串转换为整数。 它基本上是这样做的(好吧,我不知道它在内部做了什么,但归结为此):
if($i == (int) $s)
这使得陈述真实