我有这段代码:
$range = array (
'options' => array (
'min_range' => 0,
'max_range' => 10
)
);
if (!$number = filter_input(INPUT_POST, 'number', FILTER_VALIDATE_INT, $range)) {
exit ('Error');
}
Run Code Online (Sandbox Code Playgroud)
"数字"输入将从包含0到10的选项发送.
问题是如果number = 0,则返回"Error".
这有什么问题?
谢谢
这是因为!0是真的.为什么?通过添加!您正在进行布尔检查,因此您的变量将被转换.并根据手册:
转换为布尔值时,会考虑以下值
FALSE:
布尔
FALSE本身整数
0(零)浮点数
0.0(零)空字符串和字符串
"0"...
因此整数0转换为false所有其他整数转换为true.
这就是你需要进行类型安全检查的原因,false或者null因为这些值filter_input()因某些原因失败而返回的原因.
$number = filter_input(INPUT_POST, 'number', FILTER_VALIDATE_INT, $range);
if ($number === false) {
//filter failed
}
if ($number === null) {
//variable was not set
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5054 次 |
| 最近记录: |