filter_var_array()执行顺序和规则

时间:2014-12-16 06:08:16

标签: php filtering

以下是一段简单的代码,显示了filter_var_array(),

的工作原理
 <?php

$data = array('age' => 21, 
    'rating' => 4,
    'price' => 9.95,
    'thousands' => '100,000.95',
    'european' => '100.000,95'
     ); 

$instructions = array('age' => FILTER_VALIDATE_INT,

    'rating' => array('filter' => FILTER_VALIDATE_INT,
        'options' => array('min_range' => 1,
        'max_range' => 4)),

    'price' => array('filter' => FILTER_SANITIZE_NUMBER_FLOAT,
        'flags' => FILTER_FLAG_ALLOW_FRACTION),

    'thousands' => array('filter' => FILTER_SANITIZE_NUMBER_FLOAT,
        'flags' => FILTER_FLAG_ALLOW_FRACTION |
        FILTER_FLAG_ALLOW_THOUSAND),

    'european' => array('filter' => FILTER_VALIDATE_FLOAT,
        'options' => array('decimal' => ','),
        'flags' => FILTER_FLAG_ALLOW_THOUSAND)
);

$filtered = filter_var_array($data, $instructions);
var_dump($filtered);

乍一看很难掌握这个函数(filte_var_array())执行的顺序/方式。

给出以上代码段中的以下代码:

$filtered = filter_var_array($data, $instructions);

是否要检查$ data中的第一个键并尝试将其与$ instructions中第一个键中给出的条件匹配?然后按顺序继续?这里有一个更重要的问题,这个函数会尝试匹配$ data中的第一个关键元素和$ instructions中的第一个关键验证规则吗?或者它会进入$指令并在整个数组中搜索匹配的键名?在$ data中的意思是假设我有以下关键顺序:

name =>
rating =>
stars =>
reviews =>

在说明书中,我可以按不同的顺序使用验证规则键:

rating =>
name =>
reviews =>
stars =>

...

如果我在$ data和$ instructions中的键有不同的名称怎么办?或者如果在$ data中有5个键并且在相应的$ instructions数组中我有4 ??

谢谢。

Tenali。

0 个答案:

没有答案