1

为什么这总是返回true

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

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

如果我回$i显它会给出 的值,这与is334不同。 $s334rr

4

5 回答 5

4

手册

如果将数字与字符串进行比较或比较涉及数字字符串,则每个字符串都将转换为数字并以数字方式执行比较。

所以:与您给出的值($i == $s)相同。($i == (int)$s)

用于===避免类型杂耍。

于 2012-09-03T13:05:20.140 回答
2

当使用 比较字符串和整数时==,字符串将尝试将大小写为整数。

于 2012-09-03T13:05:15.543 回答
2

尝试这个

$s = '334rr';
$i = intval($s);
if ($i == $s) {
 echo true;
 } else {
  echo false;
}
于 2012-09-03T13:09:47.773 回答
0

不建议将字符串与 int 进行比较。您应该使用===将验证相同数据类型和相同值的替代方法。

于 2012-09-03T13:05:39.877 回答
0

PHP 在与另一个整数 ($i) 比较时将 $s 字符串转换为整数。它基本上是这样做的(嗯,我不知道它在内部做了什么,但归结为这个):

if($i == (int) $s)

这使得陈述正确

于 2012-09-03T13:05:53.657 回答