現在の位置: ホーム> 最新記事一覧> array_filter()を使用して、条件付きフィルターフォーム入力を実装します

array_filter()を使用して、条件付きフィルターフォーム入力を実装します

M66 2025-05-14

Web開発プロセス中に、特定の条件を満たすアイテムのみが保持されるように、フォームで送信されたデータをフィルタリングする必要があることがよくあります。 PHPは非常に便利な関数Array_Filter()を提供します。これは、配列のnull値を削除するために使用できるだけでなく、コールバック関数をカスタマイズして、より複雑なフィルタリングロジックを実装します。

この記事では、array_filter()を使用してフォームで送信されたデータを条件付きでフィルタリングする方法を紹介して、より簡潔で保守可能なPHPコードを作成するのに役立ちます。

array_filter()とは何ですか?

array_filter()は、phpによって提供される配列処理機能です。その構文は次のとおりです。

 array_filter(array $array, ?callable $callback = null, int $mode = 0): array
  • $配列:フィルタリングする配列。

  • $ callback :(オプション)フィルター条件を定義するコールバック関数。

  • $モード:(オプション) array_filter_use_keyまたはarray_filter_use_use_use_use_bothを使用して、コールバック関数パラメーターを指定できます。

コールバック関数が渡されない場合、 array_filter()は、配列( false0""null[]など)にfalseを使用して要素を自動的に削除します。

例:フィルターフォーム入力

次のフィールドを提出するユーザー登録フォームがあるとします。

  • 名前

  • 郵便

  • 電子メールを購読するかどうか

値が記入されたフィールドをフィルタリングし、18年以上のユーザーデータのみを維持したいと考えています。

フォーム提出例

$_POST = [
    'name' => 'Alice',
    'email' => '',
    'age' => 17,
    'subscribe' => 'yes'
];

array_filter()を使用してフィルターロジックを実装する

// カスタムフィルター基準
$filteredInput = array_filter($_POST, function ($value, $key) {
    // 空の値をスキップします
    if ($value === '' || $value === null) {
        return false;
    }

    // に対して age フィールドは特定の方法で処理されます
    if ($key === 'age') {
        return (int)$value > 18;
    }

    return true;
}, ARRAY_FILTER_USE_BOTH);

print_r($filteredInput);

出力結果

Array
(
    [name] => Alice
    [subscribe] => yes
)

ご覧のとおり、電子メールはculされた空の文字列であり、18以下の年齢も除外され、残りは私たちが気にする有効なフィールドです。

アプリケーションシナリオ拡張

この方法を使用して、URLリクエストからパラメーターを取得することもできます。

 $_GET = [
    'search' => 'PHP',
    'page' => '0',
    'sort' => null,
    'token' => 'abc123'
];

$cleanQuery = array_filter($_GET, function ($value) {
    return $value !== '' && $value !== null;
});

$queryString = http_build_query($cleanQuery);

$url = "https://m66.net/search.php?" . $queryString;

echo $url;

出力

https://m66.net/search.php?search=PHP&page=0&token=abc123

「0」ページ値は、 0の判断を明示的に除外し、意味のあるパラメーターを保持するため、フィルタリングされていないことに注意してください。

まとめ

array_filter()を使用すると、フォーム入力を処理するときにコードロジックを大幅に簡素化でき、特に軽量のデータ検証または前処理に適しています。コールバック関数で使用すると、ほとんどの条件付きフィルタリングのニーズを満たすことができ、PHPで非常に実用的な機能です。

array_filter()は、データ検証のための普遍的なツールではないことに注意する必要があります。より複雑な検証のニーズには、PHPのフィルター拡張機能( filter_var()など)を組み合わせたり、処理に完全な検証フレームワークを使用したりすることをお勧めします。

次回処理時にデータを処理するときに、 Array_filter()を適切に使用して開発効率を向上させることができることを願っています。