現在の位置: ホーム> 最新記事一覧> array_filter()を使用して、コードの機能スタイルを改善します

array_filter()を使用して、コードの機能スタイルを改善します

M66 2025-06-03

PHPでは、純粋に機能的なプログラミング言語ではありませんが、組み込みの機能ツールを介して、コードをよりエレガントで、よりシンプルで簡単に書くことができます。 array_filter()は、しばしば見過ごされがちですが、非常に強力なツール機能です。この記事では、array_filter()を使用してPHPコードスタイルを改善し、機能的なプログラミングに近づく方法を紹介します。

array_filter()とは何ですか?

array_filter()は、PHPの組み込み配列処理機能の1つであり、配列内の要素をフィルタリングするために使用されます。配列の各要素で関数を実行するコールバック関数を受け入れ、 trueの返品値を持つ要素が保持され、他のものが削除されます。

構文は次のとおりです。

 array_filter(array $array, ?callable $callback = null, int $mode = 0): array

コールバック関数提供されていない場合、配列のfalseに相当する値( 0nullfalseなど)を削除します。

使用法1:データの「null値」をクリーンアップする

多くの場合、フォームまたはAPIからいくつかのデータを受け取ります。これには、空の文字列、null、falseなどの無効なコンテンツが含まれる場合があります。Array_filter ()を使用してコードの行をクリーンアップします。

 $data = [
    'username' => 'alice',
    'email' => '',
    'age' => null,
    'subscribe' => false,
];

$cleaned = array_filter($data);

print_r($cleaned);

出力:

 Array
(
    [username] => alice
)

これは、手動でクリーンアップを書くよりもはるかにエレガントです。

使用法2:条件フィルタリングのための匿名関数を組み合わせます

コールバック関数を渡すことにより、より柔軟な状態フィルタリングを実装できます。たとえば、ユーザーのグループからアクティブユーザーを除外します。

 $users = [
    ['name' => 'Alice', 'active' => true],
    ['name' => 'Bob', 'active' => false],
    ['name' => 'Carol', 'active' => true],
];

$activeUsers = array_filter($users, function ($user) {
    return $user['active'];
});

print_r($activeUsers);

出力にはアリスとキャロルのみが含まれます。

使用法3:API応答またはデータベースの結果を処理します

多くの無効なまたは一時的なユーザーを含むリモートAPI( https://api.m66.net/usersなど)からデータのセットを取得すると、すぐにフィルタリングできます。

 $response = file_get_contents('https://api.m66.net/users');
$users = json_decode($response, true);

$validUsers = array_filter($users, function ($user) {
    return isset($user['email']) && filter_var($user['email'], FILTER_VALIDATE_EMAIL);
});

ご覧のとおり、 array_filter()を「宣言的なプログラミング」スタイルに近づけ、「ループと条件を実装する方法」に焦点を当てるのではなく、コードの意図がより明確になります。

使用法4:他の機能的方法で使用します

array_filter()array_map()array_reduce()などの機能的な方法を組み合わせて、ほとんど役に立たない論理コードを記述できます。たとえば、アクティブユーザーのユーザー名をフィルタリングおよび抽出します。

 $usernames = array_map(
    fn($user) => $user['name'],
    array_filter($users, fn($user) => $user['active'])
);

明確なセマンティクスを備えた簡潔でエレガント。

要約します

array_filter()は、軽量で強力で使いやすい機能です。よく使用すると、PHPをより機能的で読みやすくすることができます。従来のforeachと比較して、1つのコードで意図を明確に表現し、ボイラープレートコードを削減し、保守性を向上させることができます。

次のプロジェクトでarray_filter()を使用して、コードの品質とスタイルを改善してみてください!