繁体   English   中英

Php filter_var function

[英]Php filter_var function

我知道 function filter_var() 返回 true 或 false 但是当我的意思是如果我有

if( filter_var( $value , FILTER_VALIDATE_INT ) )
    echo 'value is sanitized';
else 
    echo 'value is sanitized';

谁能解释这个 function 何时返回真或假?

如果 function 成功,则filter_var()的返回值为第一个参数的值,否则返回false

$x = 5;
$y = 3;
$z = 11;
$t = 'abc';
$options = array(
    'options'   =>  ['min_range' => 5, 'max_range' => 10],
    'flags'     =>  FILTER_REQUIRE_SCALAR
);
if (false === filter_var($x, FILTER_VALIDATE_INT, $options)) {
    // filter_var will return the value of $x (5)
    // No exceptions will be thrown
    throw new \InvalidArgumentException("$x is not a valid input");
}
if (false === filter_var($y, FILTER_VALIDATE_INT, $options)) {
    throw new \InvalidArgumentException("$y is not a valid input");
}
if (false === filter_var($z, FILTER_VALIDATE_INT, $options)) {
    throw new \InvalidArgumentException("$z is not a valid input");
}
if (false === filter_var($t, FILTER_VALIDATE_INT, $options)) {
    throw new \InvalidArgumentException("$t is not a valid input");
}

唯一不会抛出异常的变量是$x因为它是一个 integer 并且它在$options['options']定义的范围内。

也可以看看:

它永远不会返回true 如果$value不是 integer,它将返回false

正如@deceze 所说,如果 function 出错,您要么取回经过清理的变量,要么取回 FALSE。

现在,PHP 可以让您做一些有趣的事情:如果定义了一个变量并在条件语句中使用,则任何无法隐式转换为 FALSE 的 Boolean 值(即空字符串或实际 false 值)的东西都将被视为等效Boolean 值为 TRUE。 我们一直在使用这种东西,比如说,迭代从数据库中检索到的数据集。

因此,如果您调用filter_var并成功获取$value的值,则围绕调用filter_varif()语句使用$value的值作为条件。

HTH。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM