在简单的 $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_intis_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 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Roblox HttpPost

php基础---预定义数组

通过 axios post call 传递参数

动态 jQuery PHP 表单不会将 POST 数据发送到 PHP var

jmeter有啥方法可以在参数内传递参数吗? [复制]

Paypal Buy Now IPN 在 POST vars 中返回空 item_number