【发布时间】:2012-09-03 13:03:37
【问题描述】:
为什么总是返回true:
$s = '334rr';
$i = (int)$s;
if ($i == $s) {
echo true;
} else {
echo false;
}
如果我回显$i,它会给出334 的值,这与$s 不同,后者是334rr。
【问题讨论】:
为什么总是返回true:
$s = '334rr';
$i = (int)$s;
if ($i == $s) {
echo true;
} else {
echo false;
}
如果我回显$i,它会给出334 的值,这与$s 不同,后者是334rr。
【问题讨论】:
来自the manual:
如果您将数字与字符串进行比较,或者比较涉及数字字符串,则每个字符串都将转换为数字并以数字方式进行比较。
所以:($i == $s) 与 ($i == (int)$s) 的值相同。
使用=== 避免类型杂乱。
【讨论】:
当使用==比较字符串和整数时,字符串会尝试大小写为整数。
【讨论】:
试试这个
$s = '334rr';
$i = intval($s);
if ($i == $s) {
echo true;
} else {
echo false;
}
【讨论】:
不建议将字符串与 int 进行比较。您应该改用===,它将验证相同的数据类型以及相同的值。
【讨论】:
当与另一个整数 ($i) 比较时,PHP 将 $s 字符串转换为一个整数。 它基本上是这样做的(嗯,我不知道它在内部做了什么,但归结为这个):
if($i == (int) $s)
这使陈述成立
【讨论】: