Передать тип переменной из массива\строки

Рейтинг: 1Ответов: 2Опубликовано: 16.12.2014

Предположим, есть массив вида (имя переменной, тип). Как можно в функции переопределять тип вида (real)$_POST[$f]?

Ответы

▲ 1Принят

Посмотрите на 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);
▲ 1
foreach ($defs as $varName => $varType) {
    $$varName = settype($$varName, $varType);
}

http://php.net/manual/en/function.settype.php
валидации никакой