gpt4 book ai didi

PHP filter_input 验证 INT

转载 作者:可可西里 更新时间:2023-11-01 00:09:06 28 4
gpt4 key购买 nike

我有这段代码:

$range = array (
'options' => array (
'min_range' => 0,
'max_range' => 10
)
);

if (!$number = filter_input(INPUT_POST, 'number', FILTER_VALIDATE_INT, $range)) {
exit ('Error');
}

“数字”输入将从 0 到 10 的选项发送。

问题是如果 number = 0 则返回“错误”。

这有什么问题吗?

谢谢

最佳答案

这是因为 !0 为真。为什么?通过添加 ! 您正在进行 bool 检查,因此您的变量得到转换。并根据manual :

When converting to boolean, the following values are considered FALSE:

  • the boolean FALSE itself

  • the integer 0 (zero)

  • the float 0.0 (zero)

  • the empty string, and the string "0"

  • ...

所以整数 0 被转换为 false 而所有其他整数都被转换为 true

这就是为什么你需要做 type safe check对于 falsenull,因为这些是 filter_input() 因某种原因失败时返回的值。

$number = filter_input(INPUT_POST, 'number', FILTER_VALIDATE_INT, $range);
if ($number === false) {
//filter failed
}
if ($number === null) {
//variable was not set
}

关于PHP filter_input 验证 INT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24336611/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com