在简单的 $var 中传递 $_POST var 后测试 is_int 不起作用
Posted
技术标签:
【中文标题】在简单的 $var 中传递 $_POST var 后测试 is_int 不起作用【英文标题】:Test is_int doen't work after passing $_POST var in simple $var 【发布时间】:2013-12-06 15:46:11 【问题描述】:有人可以解释一下吗..:
$bob = $_POST['foo'] ;
is_int($bob)
失败,但is_numeric($bob)
正常。
所以我知道我不能直接在 $_POST 上使用 is_int 但在这里我之前将 post 值转移到另一个变量中..
请问怎么了?!
【问题讨论】:
为什么你提出一个与假设无关的问题?你写的是$_POST
,但在你的例子中你使用is_int
和is_numeric
和$bob
所以没有办法测试 is_int 是否有数据进入 $_POST ??
使用is_numeric
,如果为真,则转换为int。
【参考方案1】:
$_POST
值是字符串,无论它们是否包含数值。只是将它们转移到不同的变量并不会改变这一点。
您必须对变量进行类型转换:
$bob = (int) $_POST['foo'];
但请注意,在这种情况下,非整数值将转换为 0
。
【讨论】:
谢谢,所以如果我真的需要测试 is_int ,我需要做 $bob = (int) $_POST['foo'];那么 if(is_int($bob)) ,对吗?! @albatros 这没有意义:(int)
将始终创建一个整数。问题是它会将任何非整数转换为0。按照PKeidel上面所说的,先测试它是否是数字,然后将其转换为int。以上是关于在简单的 $var 中传递 $_POST var 后测试 is_int 不起作用的主要内容,如果未能解决你的问题,请参考以下文章