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';
}热门推荐
10 儿子立冬祝福语简短独特
11 对当兵的祝福语简短
12 侄儿高考试祝福语简短
13 伴郎红包祝福语朋友简短
14 媳妇生日简短祝福语朋友
15 公司年会祝福语简短最好
16 元旦感恩祝福语简短大全
17 红包祝福语简短10字
18 周六早晨祝福语简短