Edited at

filter_inputで配列を取得する方法

More than 1 year has passed since last update.

POSTメソッドで、下記のクエリを投げた時にPHPで$_POST["hobby] で受け取れますが、

filter_input関数を使って受け取ろうとしたらつまってしまったので、解決した方法を記入したいと思います。

 <input name="[]" type="checkbox" value="checkboxA"> 野球

<input name="[]" type="checkbox" value="checkboxB"> サッカー

最初は、このように書いていたのですがデフォルトでは配列の取得はできません。

$hobby = filter_input(INPUT_POST, 'hobby');

なので、第四引数に FILTER_REQUIRE_ARRAY を指定すると、取得できるようになります。

$hobby = filter_input(INPUT_POST, 'hobby', FILTER_DEFAULT, [

'flags' => FILTER_REQUIRE_ARRAY
]);

これを省略して書きた場合かつFILTER_REQUIRE_ARRAY以外の細かい設定をする必要がなければ

$hobby = filter_input(INPUT_POST, 'hobby', FILTER_DEFAULT,FILTER_REQUIRE_ARRAY);

もしくは

$post = filter_input_array(INPUT_POST, [

'hobby' => [
'flags' => FILTER_REQUIRE_ARRAY
]
]);

このように書けば解決できました。