从表单获取变量:
<form method = 'POST' action = ''>
<input type = 'text' name = 'a' size = '1' >
<input type = 'submit' value = 'Find it'>
</form>"
如果我输入1并使用gettype($ POST _ ['a'])它返回我的字符串,是否可以输入int?因为在此之后我想检查该变量是否为int。
更新
得到答案,它总是返回字符串,他们提供我使用(int)或intval(),但如果它真的像'a'字符串它返回0,但它也可能是整数值0,如何克服这个问题?
更新
编辑拼写错误后,Brad Christie建议使用is_numeric
答案 0 :(得分:24)
// convert the $_POST['a'] to integer if it's valid, or default to 0
$int = (is_numeric($_POST['a']) ? (int)$_POST['a'] : 0);
您可以使用is_numeric进行检查,而php也允许转换为integer类型。
对于实际比较,您可以执行is_int。
<强>更新强>
版本5.2具有filter_input
,对于此数据类型(以及其他数据)可能更健壮一些:
$int = filter_input(INPUT_POST, 'a', FILTER_VALIDATE_INT);
我选择FILTER_VALIDATE_INT
,但也有FILTER_SANITIZE_NUMBER_INT
和a lot more - 这取决于您想要做什么。
答案 1 :(得分:16)
通过HTTP发送电线,所有是一个字符串。由服务器决定“1”应为1
。
答案 2 :(得分:4)
没有。 HTTP仅处理文本(或二进制文件)。
你必须转换它。
答案 3 :(得分:1)
我会使用(int)$_POST['a']
将其转换为整数。
答案 4 :(得分:0)
如果您希望保留广泛的类型兼容性,并保留除int(double,float,ecc。)以外的其他输入类型,我建议使用以下方法:
$var = is_numeric($_POST['a'])?$_POST['a']*1:$_POST['a'];
您将获得:
$_POST['a'] = "abc"; // string(3) "abc"
$_POST['a'] = "10"; // int(10)
$_POST['a'] = "10.12"; // float(10.12)
答案 5 :(得分:0)
您可以像这样将变量转换为整数
$var = (int) $_POST['a'];