【发布时间】:2014-01-28 14:27:14
【问题描述】:
<?php
isInt("4");
isInt("Test");
function isInt($id){
echo $id." ".(int)$id;
if($id == (int)$id)echo "True.<br />";
else echo "False.<br />";
}
?>
输出结果为:
4 4 True.
Test 0 True.
您会注意到第二个结果为真,根据输出,它应该回显假。
我意识到 php is_int() 中有一个内置函数。
我还意识到,如果我在 if 语句中输入第三个等号:if($id === (int)$id),那么第二个等号将返回 false,但第一个等号也会返回 false。
有人可以向我解释为什么 PHP 会这样做,也许可以解决这个问题? (我正在运行 PHP 5.4.22)
基本上我想要完成的是isInt("4") 回显真,isInt(4) 回显真,isInt("Text") 回显假;
【问题讨论】:
-
这就是 PHP “工作”的方式。
==类型会处理它的操作数,即使是显式转换。 -
使用 is_numeric() 代替然后不需要自定义函数
-
你认为这很糟糕?试试
$a = '0xFF'; $b = '255.0'; var_dump($a == $b)... -
为什么不使用 is_int() 函数? php.net/is_int
-
PHP 有时真的很烦人。谢谢戴夫,这可以满足我的需要。马里奥,我认为
is_int()不适用于我的情况,而is_numeric()更灵活