为什么这总是返回true
:
$s = '334rr';
$i = (int)$s;
if ($i == $s) {
echo true;
} else {
echo false;
}
如果我回$i
显它会给出 的值,这与is334
不同。 $s
334rr
从手册:
如果将数字与字符串进行比较或比较涉及数字字符串,则每个字符串都将转换为数字并以数字方式执行比较。
所以:与您给出的值($i == $s)
相同。($i == (int)$s)
用于===
避免类型杂耍。
当使用 比较字符串和整数时==
,字符串将尝试将大小写为整数。
尝试这个
$s = '334rr';
$i = intval($s);
if ($i == $s) {
echo true;
} else {
echo false;
}
不建议将字符串与 int 进行比较。您应该使用===
将验证相同数据类型和相同值的替代方法。
PHP 在与另一个整数 ($i) 比较时将 $s 字符串转换为整数。它基本上是这样做的(嗯,我不知道它在内部做了什么,但归结为这个):
if($i == (int) $s)
这使得陈述正确