这个简单的PHP行有什么问题?

时间:2011-01-08 19:59:55

标签: php

is_int($_GET['pid']) ? define(PRODUCT, $_GET['pid']) : die('Invalid Product Id');

即使pid的值是一个整数,我仍然会收到无效的产品ID消息。为什么呢?

4 个答案:

答案 0 :(得分:4)

manual类似:要测试变量是数字还是数字字符串(例如表单输入,总是字符串),您必须使用is_numeric()

编辑:虽然我的回答暗示了这一点,但我会更具体:$_GET的内容是字符串,因此is_int调用将始终返回false。如果您真正想要验证的是特定字符串的内容代表整数数字,您可以使用对is_numeric的调用。

答案 1 :(得分:2)

$ _GET数组中的

值通常是类型字符串,但有时也是类型数组。

使用ctype_digit()检查字符串是否完全是数字字符。可选地,首先修剪()字符串。如果你想接受有时以数字方式解释的各种格式的字符串,例如小数,科学记数法,十六进制字符串等,则只使用is_numeric()...

答案 2 :(得分:1)

$_GET[]始终返回字符串,因此is_int()始终评估为false。请改为is_numeric()

答案 3 :(得分:1)

$_GET中的任何内容都是字符串,is_int("2")返回false