関数の概要
PHPの filter_var_array 関数は、配列の各要素に対して一括でフィルタリングやバリデーションを行える便利な関数です。大量の入力データを個別に検証する手間を省き、効率的に安全なデータ処理が可能になります。特にユーザーからのフォーム入力など、複数の値をまとめて検証したい場合に重宝します。
パラメータの説明
array $data:検証対象の配列。キーと値のペアで指定します。array|int $args:各配列要素に適用するフィルターを指定します。単一のフィルターを全要素に適用する場合は整数値、個別に設定する場合は配列形式で指定可能です。bool $add_empty(オプション):この値がtrueの場合、$argsに存在しないキーが$dataにあっても検証結果に空の値を追加します。デフォルトはtrueです。
戻り値
検証結果として、フィルターを通した配列を返します。もし特定の値がフィルターに失敗した場合は、その要素が FALSE に置き換わります。入力に問題があるかを簡単に確認できます。
使用例
基本的な使い方
<?php
$data = [
'email' => 'example@example.com',
'age' => '25',
'website' => 'https://example.com'
];
$filters = [
'email' => FILTER_VALIDATE_EMAIL,
'age' => [
'filter' => FILTER_VALIDATE_INT,
'options' => ['min_range' => 18, 'max_range' => 99]
],
'website' => FILTER_VALIDATE_URL
];
$result = filter_var_array($data, $filters);
var_dump($result);
?>
この例では、メールアドレス、年齢、ウェブサイトURLをそれぞれ適切なバリデーションで検証します。条件を満たせば元の値が返り、失敗すれば FALSE となります。
単一フィルターをすべての値に適用する例
<?php
$data = ['123', '456', '789'];
$filter = FILTER_VALIDATE_INT;
$result = filter_var_array($data, $filter);
var_dump($result);
?>
この場合、すべての配列要素に対して整数としての検証を行います。配列内の全値が数字かどうかまとめて判定したい時に便利です。
フィルターのオプションを使った細かい検証
<?php
$data = [
'username' => 'User_01',
'age' => '20',
'email' => 'invalid-email'
];
$filters = [
'username' => [
'filter' => FILTER_CALLBACK,
'options' => function($value) {
return preg_match('/^[a-zA-Z0-9_]+$/', $value) ? $value : false;
}
],
'age' => [
'filter' => FILTER_VALIDATE_INT,
'options' => ['min_range' => 18]
],
'email' => FILTER_VALIDATE_EMAIL
];
$result = filter_var_array($data, $filters);
var_dump($result);
?>
ここではユーザー名のフォーマットチェックをコールバック関数で実装し、年齢とメールの検証も合わせて行っています。不正なメールは FALSE になります。
関連する関数
filter_var:単一の値にフィルターを適用するfilter_input:グローバル変数から値を取得してフィルターをかけるfilter_input_array:$_GETや$_POSTなどの入力配列を一括検証する
まとめ
filter_var_array はPHPで複数の配列データに対して一括で簡単にバリデーションやフィルタリングを行う強力な関数です。適切に使うことでコードの簡潔化と安全性の向上が図れます。フォームデータの検証やAPIからの受け取りデータ処理など、幅広い用途に役立つため、PHPプログラマはぜひ覚えておきたい関数です。
