Ниже приведен простой фрагмент кода, который показывает работу 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);
это как пойти проверить 1-й ключ в $ data и попытаться сопоставить его с условиями, указанными в 1-м ключе в $ инструкциях? а затем продолжается в этом порядке? еще один важный вопрос: попытается ли эта функция сопоставить 1-й ключевой элемент в $ data с 1-м ключом правил проверки в $ инструкциях? или он войдет в $ инструкции и найдет во всем массиве подходящее имя ключа? в среднем в $ data предположим, что у меня есть следующий порядок ключей:
name =>
rating =>
stars =>
reviews =>
в инструкциях я могу иметь ключи правила проверки в другом порядке:
rating =>
name =>
reviews =>
stars =>
??
Что делать, если у меня есть разные имена для ключей в $ data и $ инструкциях? или что если в $ data есть, скажем, 5 ключей, а в соответствующем массиве $ инструкции у меня есть 4 ??
Благодарю .
Тенали.
Задача ещё не решена.
Других решений пока нет …