以下是一段简单的代码,显示了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。