我可以在 php 过滤器中直接得到这个吗(FILTER_REQUIRE_ARRAY、FILTER_REQUIRE_SCALAR、FILTER_FORCE_ARRAY)

Ram*_*leh 3 php filtering

3 个 php 常量,我不确定它们是做什么的

1. FILTER_REQUIRE_ARRAY

The name says it all I can agree no more but there is a function called
<em>filter_var/input_array()</em> which works in similar fashion; 
I've seen examples where recursive validation is required but 
not all element in the array are arrays some items are just scalar value 
Run Code Online (Sandbox Code Playgroud)




FILTER_REQUIRE_SCALAR

    <?php 
        $x = 5;
        $y = [1, 2, 3];

        var_dump(filter_var($x,FILTER_REQUIRE_SCALAR));
        var_dump(filter_var($y,FILTER_REQUIRE_SCALAR));
    ?>
Run Code Online (Sandbox Code Playgroud)

考虑产生

bool(false)
bool(false)
as use的 prev code可以看到$x 确实是 标量


FILTER_FORCE_ARRAY

总是返回一个数组这是我在phpDoc 中找到的所有相关文档请给我一个关于此的示例

sle*_*vy1 5

FILTER_REQUIRE_ARRAY:

<?php

$arr = array(1,2,3,4,5);
$a = 3;
$result = filter_var( $arr,FILTER_VALIDATE_INT, FILTER_REQUIRE_ARRAY);
var_dump($result); 

// output:
array (size=5)
  0 => int 1
  1 => int 2
  2 => int 3
  3 => int 4
  4 => int 5

$result = filter_var( $a,FILTER_VALIDATE_INT, FILTER_REQUIRE_ARRAY);
var_dump($result); // boolean false
Run Code Online (Sandbox Code Playgroud)

在这个片段中,如果希望输入是一个数组,通过使用选项 FILTER_REQUIRE_ARRAY,它有助于避免验证包含标量值而不是数组的输入。

filter_var_array() 不适用于本示例中的数据,因为它期望数据如下:

带有字符串键的数组,其中包含要过滤的数据。(见手册)

FILTER_REQUIRE_SCALAR:

<?php

$arr = array(1,2,3,4,5);
$a = 3;
$result = filter_var( $arr,FILTER_VALIDATE_INT, FILTER_REQUIRE_SCALAR);
var_dump($result); // boolean false

$result = filter_var( $a,FILTER_VALIDATE_INT, FILTER_REQUIRE_SCALAR);
var_dump($result); // int 3
Run Code Online (Sandbox Code Playgroud)

在前面的代码中,如果希望输入是标量,则通过使用选项 FILTER_REQUIRE_SCALAR,可用于检测输入是否包含信息数组而不是预期的标量值。

这是一个使用 FILTER_FORCE_ARRAY 的简单示例:

<?php

$num = "1";
$result = filter_var( $num,FILTER_VALIDATE_INT,FILTER_FORCE_ARRAY);
var_dump($result);

// output:
array (size=1)
  0 => int 1
Run Code Online (Sandbox Code Playgroud)

如果标志 FILTER_FORCE_ARRAY 不存在,则 $result 将是 int 1