2013-10-28 15 views
33

Podczas korzystania z filter_input, nie jestem w stanie pobrać zmiennej tablicowej POST. Wejście POST:POST Zmienna tablica i wartość filtra

type    => 'container', 
action   => 'edit', 
data[display]  => 1, 
data[query_limit] => 100 

mogę uzyskać dostęp do zmiennej data od $_POST superglobalną poprawnie jako tablica, ale filter_input funkcja nic nie zwraca:

$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) 

Czy nie można by wykorzystać filter_input dla POST zmienna tablicowa?

+0

nie jest 'filter_input_array()' jedno czego potrzebujesz ? –

Odpowiedz

94

Spróbuj:

$data = filter_input(INPUT_POST, 'data', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY); 
+2

Nice, działa idealnie. Wydaje się, że powinno być prostsze niż to, co jest tak powszechne, jak to, co robię :) – jterry

+2

Uzgodnione - przynajmniej uważasz, że podręcznik php zawierałby notatkę lub coś takiego. –

+0

Wspaniałe rozwiązanie! – Jazzo

8

FILTER_REQUIRE_ARRAY zwróci false jeśli zmienna POST zawiera wartość skalarną. Jeśli nie masz pewności, czy po prostu chcesz użyć zmiennej POST przyjmującej wartości zarówno skalarne, jak i tablicowe, użyj zamiast tego wartości FILTER_FORCE_ARRAY, która traktuje dowolne dane wejściowe jako tablicę, odpowiednio rzucając wartości skalarne.

1

Użyłem FormData w javascript i opublikować pola z ajax jquery. Sposób mogę otrzymać wszystkie te pola to:

$arrFields = array('field1','field2','field2','field3', 'field4','field5'); 
foreach($arrFields as $field){ 
    $params[$field] = filter_input(INPUT_POST, $field, FILTER_DEFAULT); 
} 
var_dump($params); 

Potem będę się wszystkie dane do tablicy, które mogę przekazać na ...

+1

spróbuj użyć filter_input_array(); –

Powiązane problemy