This question already has answers here:
PHP intval() weird results
(5个答案)
5年前关闭。
在这里,
我以为可以使用intval函数查看
我输入的是
我不使用
不知道为什么会发生意外行为。
(5个答案)
5年前关闭。
在这里,
$username
是一个用户输入,我正在尝试检查该条目是用户名还是用户标识(所有整数)我以为可以使用intval函数查看
$username
和intval($username)
是否相同,这意味着输入是一个用户ID。我输入的是
google
。并且intval('google')
为0。为什么执行if语句的真正部分?任何的想法?我不使用
===
,因为userinput将是一个字符串。if($username == intval($username))
{
echo "userid";
}
else
{
echo "username";
}
不知道为什么会发生意外行为。
最佳答案
这是由于比较运算符的conversion
和type juggling
而发生的。intval('anystring')
将是0
。
当比较string
时,它也将转换为数值。因此,当字符串转换时,它也将是0
。
因此,在这种情况下,'google1' == intval('google')
将为0 == 0
,这是正确的。对于这种类型的比较,请始终使用相同(===)比较。
comparison
关于php - Intval的异常行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31051067/
10-11 03:57