PHP 问题:发布变量
问题
采用以下HTML表单。
提交上述表单后,以下PHP代码的输出是什么,为什么?
if ($_POST['number'] === 0) {
echo 'number is zero';
} else {
echo 'number is not zero';
}
回答
上面代码的输出是“数字不为零”。发生这种情况是因为我们使用===运算符来查看变量的值和类型。$_POST数组的'number'元素与整数0之间的比较不会返回true,因为post数组的每个值始终是一个字符串。这可以通过gettype()对值使用函数来证明,就像这样。
printgettype($_POST['number']);//prints'string'
这是在与post变量进行比较时需要考虑的事情,因为==运算符可能会导致误报被接受。例如,如果post数组包含值'false',则以下代码将返回true。
var_dump('false'==0);//prints'booleantrue'
您可能认为转换$_POST['number']值会解决这个问题。这适用于大多数情况,但如果输入了“false”值,则强制转换将导致值为0。
var_dump((int)false);//prints'int0'
为了解决这个问题,您需要使用类似的函数is_numeric()来确保字符串是一个数字,然后再尝试将其强制转换为1。以下代码是上述块的更正版本,如果数字实际上为零,则只会打印“数字为零”。
if (is_numeric($_POST['number']) && (int)$_POST['number'] === 0) {
echo 'number is zero';
} else {
echo 'number is not zero';
}热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下