在将整数与字符串进行比较时返回错误的结果

Peo*_*eon 0 php if-statement

不确定我是否没有看到什么或什么,但我有一个简单的id验证

$id = '2s2';

var_dump($id);
var_dump($id*1);
if ($id != ($id*1) || $id <= 0) {
    die('wrong id');
}
die('here?');
Run Code Online (Sandbox Code Playgroud)

结果:

string '2s2' (length=3)
int 2
here?
Run Code Online (Sandbox Code Playgroud)

它检查是否id相同id multiplied by 1 或者值是零还是更低.因为,$id = '2s2;它的值不相同(在转储中可以看到).

为什么这不回应wrong id

Mar*_*pte 6

我猜你把它乘以1来看看它是否$id是数字.在这种情况下,您可以简单地:

if (!is_numeric($id) || $id <= 0) {
    die('wrong id');
}
Run Code Online (Sandbox Code Playgroud)