This question already has answers here:
PHP intval() weird results

(5个答案)


5年前关闭。




在这里,$username是一个用户输入,我正在尝试检查该条目是用户名还是用户标识(所有整数)

我以为可以使用intval函数查看$usernameintval($username)是否相同,这意味着输入是一个用户ID。

我输入的是google。并且intval('google')为0。为什么执行if语句的真正部分?任何的想法?

我不使用===,因为userinput将是一个字符串。
if($username == intval($username))
    {
     echo "userid";
    }
    else
    {
    echo "username";
    }

不知道为什么会发生意外行为。

最佳答案

这是由于比较运算符的conversiontype 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