我有以下情况:
<select name="n">
<option>Please fill</option>
<option value="0">0</option>
<option value="1">1</option>
</select>
现在,我使用 Ajax 传递序列化表单。我在控制台的 POST 面板中正确地看到了这一点:
[...]&n=0&[...]
我的 php 验证脚本检查该字段是否已填写,以及出于安全原因,它是一个数字:
parse_str($_REQUEST['data'], $values);
if (!ctype_digit($values['n'])) {
array_push($err, 'n');
}
有人可以解释为什么如果我传递值 0 这个检查总是失败?如果我通过任何其他带有 0 以外的数字的选择选项,它会让我进入......我也尝试使用 is_numeric 而不是 ctype_digit (只是为了尝试),它也失败了。但这没有任何意义……因为 0 既是数字又是数字!
更新
如果我var_dump($values['n'])
,我知道它是空的......那么有什么问题parse_str($_REQUEST['data'], $values)
吗?