фильтрация — могу ли я получить это прямо в php фильтрах (FILTER_REQUIRE_ARRAY, FILTER_REQUIRE_SCALAR, FILTER_FORCE_ARRAY)

3 константы php я не уверен, что они делают

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

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

var_dump(filter_var($x,FILTER_REQUIRE_SCALAR));
var_dump(filter_var($y,FILTER_REQUIRE_SCALAR));
?>

Рассмотрим предыдущий код, который производит

BOOL (ложь)
BOOL (ложь)
как видно $ x действительно скаляр

Всегда возвращает массив Это все документация, которую я нашел об этом в PHPDoc приведите пример об этом, пожалуйста

1

Решение

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

В этом фрагменте, если вы ожидаете, что входные данные будут массивом, используя опцию 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

В предыдущем коде, если ожидается, что входные данные будут скалярными, используя опцию 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

Если бы флаг FILTER_FORCE_ARRAY не присутствовал, то $ результат будет int 1

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]