Laravelの毎日の開発プロセス中に、アレイ内の「無効」データをクリーニングする必要があるシナリオに遭遇することがよくあります。たとえば、フォームに記入されていないフィールド、APIパラメーターで空の値、または特定のロジックに基づいてデータ項目をフィルタリングする必要があります。 PHPでは、 array_filter()はこれらの問題に対処するための強力なツールです。
Array_filter()はネイティブPHP関数ですが、Laravelプロジェクトでは非常に幅広いアプリケーションシナリオもあります。次に、Laravelプロジェクトで優雅に使用するために、いくつかの実際の例を段階的に段階的に説明します。
最も一般的なシナリオの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を書くときに良いヘルパーにすることもできます!