2013-10-28 78 views
33

在使用filter_input時,我無法插入POST數組變量。該POST輸入:POST變量數組和filter_input

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

我可以從$_POST訪問data變量超全局正確作爲一個數組,但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_inputPOST數組變量?

+0

不是'filter_input_array()'你需要的? –

回答

94

嘗試:如果POST變量包含標量值

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

不錯,完美的作品。似乎它應該比這更普通,比我更喜歡的東西:) – jterry

+2

同意 - 至少你會認爲PHP手冊將包括一個筆記或其他東西。 –

+0

輝煌的解決方案! – Jazzo

8

FILTER_REQUIRE_ARRAY將返回false。如果您不確定或只是試圖使用POST變量接受標量和數組值,請改爲使用FILTER_FORCE_ARRAY,這會將任何輸入視爲數組,從而基本上會相應地轉換標量值。

$data = filter_input(INPUT_POST, 'data', FILTER_DEFAULT, FILTER_FORCE_ARRAY); 
1

我已經在JavaScript中使用了FormData,並且使用jquery ajax發佈了字段。 我收到所有這些領域的方式是:

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

然後,我會得到所有的數據到一個數組,我可以傳遞......

+1

嘗試使用filter_input_array(); –