2013-10-28 5 views
33

filter_inputを使用しているうちに、配列変数POSTを取得できません。 POST入力: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) 

POSTためfilter_inputを使用することはできません:配列が、filter_input関数は何も返さないよう

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

私は$_POSTスーパーグローバル正しくからdata変数にアクセスすることができます配列変数?

+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(); –