比较两个变量返回false结果

时间:2012-09-03 13:03:37

标签: php string

为什么这总是返回true

$s = '334rr';
$i = (int)$s;

if ($i == $s) {
    echo true;
} else {
    echo false;
}

如果我回显$i,则会提供334的值,这与$s的{​​{1}}不同。

5 个答案:

答案 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)

这使得陈述真实