is_int($_GET['pid']) ? define(PRODUCT, $_GET['pid']) : die('Invalid Product Id');
即使pid的值是一个整数,我仍然会收到无效的产品ID消息。为什么呢?
答案 0 :(得分:4)
与manual类似:要测试变量是数字还是数字字符串(例如表单输入,总是字符串),您必须使用is_numeric()。
编辑:虽然我的回答暗示了这一点,但我会更具体:$_GET
的内容是字符串,因此is_int
调用将始终返回false。如果您真正想要验证的是特定字符串的内容代表整数数字,您可以使用对is_numeric
的调用。
答案 1 :(得分:2)
值通常是类型字符串,但有时也是类型数组。
使用ctype_digit()检查字符串是否完全是数字字符。可选地,首先修剪()字符串。如果你想接受有时以数字方式解释的各种格式的字符串,例如小数,科学记数法,十六进制字符串等,则只使用is_numeric()...
答案 2 :(得分:1)
$_GET[]
始终返回字符串,因此is_int()
始终评估为false
。请改为is_numeric()
。
答案 3 :(得分:1)
$_GET
中的任何内容都是字符串,is_int("2")
返回false
。