При использовании filter_input, я'м не в состоянии тянуть в пост
переменной массива. В пост
ввода:
type => 'container',
action => 'edit',
data[display] => 1,
data[query_limit] => 100
Я могу получить доступ к переменной данных
из $_POST
суперглобальная правильно как массив, но filter_input
функция ничего не возвращает:
$data = $_POST['data']; // Working, woot
$data = filter_input(INPUT_POST, 'data'); // returns null, should return array
$action = filter_input(INPUT_POST, 'action'); // returns "edit" (correctly)
Это не возможно, чтобы использовать filter_inputна
пост` переменной массива?
Попробуйте : <БР />
$data = filter_input(INPUT_POST, 'data', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
Ссылки:
FILTER_REQUIRE_ARRAY
вернет false, если пост
переменная содержит значение скаляра. Если вы'повторно уверены или просто предполагаете на пост
переменная принимает скалярных и значения массива, используйте FILTER_FORCE_ARRAY
вместо этого, который будет относиться к любой входной массив, по сути, кастинг-соответственно скалярные значения.
$data = filter_input(INPUT_POST, 'data', FILTER_DEFAULT, FILTER_FORCE_ARRAY);
Я использовал виде FormData на JavaScript и разместить поля с помощью jQuery Аякс. Как мне получить все эти поля:
$arrFields = array('field1','field2','field2','field3', 'field4','field5');
foreach($arrFields as $field){
$params[$field] = filter_input(INPUT_POST, $field, FILTER_DEFAULT);
}
var_dump($params);
Тогда я получу все данные в массив, который я могу передать...
Кроме того, вы можете делать фильтрацию в одном кадре...например
$MY_INPUT = filter_input_array(INPUT_POST, [
"item_id" => FILTER_SANITIZE_NUMBER_INT,
"item_string_code" => FILTER_SANITIZE_STRING,
"method" => FILTER_SANITIZE_STRING,
"item_id_array" => array(
'filter' => FILTER_SANITIZE_NUMBER_INT,
'flags' => FILTER_REQUIRE_ARRAY
)
]);
Результат почти такой же, как POST-данные в плане того, что вы вернетесь только вместо глобальной $_POST, где твоя переменная будет $MY_INPUT в этом случае.