現在の位置: ホーム> 最新記事一覧> laravelのarray_filter()の実用的なアプリケーションの例

laravelのarray_filter()の実用的なアプリケーションの例

M66 2025-06-04

Laravelの毎日の開発プロセス中に、アレイ内の「無効」データをクリーニングする必要があるシナリオに遭遇することがよくあります。たとえば、フォームに記入されていないフィールド、APIパラメーターで空の値、または特定のロジックに基づいてデータ項目をフィルタリングする必要があります。 PHPでは、 array_filter()はこれらの問題に対処するための強力なツールです。

Array_filter()はネイティブPHP関数ですが、Laravelプロジェクトでは非常に幅広いアプリケーションシナリオもあります。次に、Laravelプロジェクトで優雅に使用するために、いくつかの実際の例を段階的に段階的に説明します。

基本的な使用法:アレイからnullまたは空の文字列を削除する

最も一般的なシナリオの1つは、ユーザーがフォームを送信するときですが、一部のフィールドは空です。空でないフィールドのみを処理したいと考えています。

 $data = [
    'name' => 'Alice',
    'email' => '',
    'phone' => null,
    'age' => 25,
];

// 使用 array_filter 空の値をフィルタリングします(デフォルトで削除されます false、null、''、0)
$filtered = array_filter($data);

dd($filtered);

出力:

 [
    'name' => 'Alice',
    'age' => 25,
]

Laravelでは、この処理は、コントローラーで要求されたデータを受信した後にクリーンアップするためによく使用されます。

 public function store(Request $request)
{
    $data = array_filter($request->only(['name', 'email', 'phone', 'age']));
    
    // 次のロジックは、空でないフィールドのみを処理します
    User::create($data);

    return redirect()->to('https://m66.net/success');
}

カスタムフィルター:番号を保持しますが、空の文字列を削除します

デフォルトのarray_filter()は、番号0と文字列「0」を含むすべての「false値」を削除します。空の文字列を削除して有効な0を維持したい場合はどうなりますか?

 $data = [
    'status' => 0,
    'code' => '0',
    'description' => '',
];

// カスタムコールバック,空の文字列のみをフィルタリングします
$filtered = array_filter($data, function ($value) {
    return $value !== '';
});

出力:

 [
    'status' => 0,
    'code' => '0',
]

この書き込み方法は、順序ステータス、価格帯、その他のロジックの処理において非常に実用的であり、効果的な「0」のエラー削除を回避します。

コレクションと組み合わせて使用​​します

Laravelのコレクションは、 Array_Filter()と同様の同様のFilter()メソッドも提供しますが、より強力です。たとえば、チェーンで動作できます。

 $users = collect([
    ['name' => 'Tom', 'email' => 'tom@m66.net'],
    ['name' => 'Jerry', 'email' => null],
    ['name' => 'Spike', 'email' => ''],
]);

$filtered = $users->filter(function ($user) {
    return !empty($user['email']);
});

フィルター()を直接使用して、ロジックを簡素化することもできます。

 $filtered = $users->filter(fn($user) => !empty($user['email']));

出力:

 [
    ['name' => 'Tom', 'email' => 'tom@m66.net'],
]

実用的なシナリオ:リクエストのフィルター検索条件

ユーザー検索機能を開発し、フロントエンドがいくつかのオプションのパラメーターを通過し、空でない条件を含むクエリを作成するだけであるとします。

 public function index(Request $request)
{
    $filters = array_filter($request->only(['name', 'email', 'status']), function ($val) {
        return $val !== '';
    });

    $users = User::where($filters)->get();

    return view('users.index', compact('users'));
}

このようにして、実際の入力に基づいてクエリ条件を柔軟に構築して、 where( ''、 '')などの無効なクエリを避けることができます。

要約します

array_filter()は、シンプルだが非常に強力なツールです。 Laravelのリクエストとコレクションで使用すると、データのクリーニングとコードの読みやすさの効率を大幅に改善できます。

プロジェクトでarray_filter()を使用していない場合は、今すぐ試して、Laravelを書くときに良いヘルパーにすることもできます!