Передать тип переменной из массива\строки
Предположим, есть массив вида (имя переменной, тип). Как можно в функции переопределять тип вида (real)$_POST[$f]
?
Источник: Stack Overflow на русском
Предположим, есть массив вида (имя переменной, тип). Как можно в функции переопределять тип вида (real)$_POST[$f]
?
Посмотрите на filter_var_array()
– задавайте имени переменной в соответствие тип фильтра:
$arguments = array(
"var1" => "int",
"var2" => "boolean",
"var3" => "float",
"var4" => "string",
);
// привести к значениям фильтров
function setFilters( $a){
// меняем "int" на значение значение константы FILTER_VALIDATE_INT и т.п.
return filter_id( $a);
}
$arguments = array_map( "setFilters", $arguments);
// отфильтровать параметры из ассоциативного массива
$data = array(
"var1" => "3600",
"var2" => "TRUE",
"var3" => "3.1415926",
"var4" => "To be, or whatever",
);
$input = filter_var_array( $data, $arguments);
var_dump( $input);
/* выведет: array(4) {
["var1"]=>int(3600)
["var2"]=>bool(true)
["var3"]=>float(3.1415926)
["var4"]=>string(18) "To be, or whatever"
} */
// так же примерно фильтровать оптом данные из POST:
// $input = filter_input_array( INPUT_POST, $arguments);
foreach ($defs as $varName => $varType) {
$$varName = settype($$varName, $varType);
}
http://php.net/manual/en/function.settype.php
валидации никакой