Während des täglichen Entwicklungsprozesses von Laravel begegnen wir häufig Szenarien, in denen "ungültige" Daten im Array gereinigt werden müssen. Beispielsweise müssen Felder, die nicht in das Formular ausgefüllt sind, Werte, die in API -Parametern leer sind, oder Datenelemente basierend auf einer bestimmten Logik gefiltert werden müssen. In PHP ist Array_filter () ein leistungsstarkes Werkzeug, um diese Probleme zu lösen.
Obwohl Array_Filter () eine native PHP -Funktion ist, hat es auch ein sehr breites Anwendungsszenario im Laravel -Projekt. Als nächstes führen wir Sie Schritt für Schritt durch ein paar echte Beispiele, um es in Ihrem Laravel -Projekt anmutig zu verwenden.
Eines der häufigsten Szenarien ist, wenn der Benutzer ein Formular einreicht, einige Felder jedoch leer sind. Wir wollen nur nicht leere Felder verarbeiten.
$data = [
'name' => 'Alice',
'email' => '',
'phone' => null,
'age' => 25,
];
// verwenden array_filter Filter leere Werte(Es wird standardmäßig entfernt false、null、''、0)
$filtered = array_filter($data);
dd($filtered);
Ausgabe:
[
'name' => 'Alice',
'age' => 25,
]
In Laravel wird diese Verarbeitung häufig verwendet, um die angeforderten Daten im Controller zu erhalten:
public function store(Request $request)
{
$data = array_filter($request->only(['name', 'email', 'phone', 'age']));
// Die folgende Logik verarbeitet nur nicht leere Felder
User::create($data);
return redirect()->to('https://m66.net/success');
}
Der Standard -Array_Filter () entfernt alle "falschen Werte", einschließlich der Nummer 0 und der Zeichenfolge "0". Was ist, wenn Sie nur leere Saiten entfernen und gültige 0s aufbewahren möchten?
$data = [
'status' => 0,
'code' => '0',
'description' => '',
];
// Benutzerdefinierte Rückrufe,Filter nur leere Saiten
$filtered = array_filter($data, function ($value) {
return $value !== '';
});
Ausgabe:
[
'status' => 0,
'code' => '0',
]
Diese Schreibmethode ist im Umgangsauftragsstatus, der Preisspanne und anderer Logik sehr praktisch und vermeidet die Fehlerlöschung von effektivem "0".
Die Sammlung von Laravel bietet auch eine ähnliche Filter () -Methode, ähnlich wie bei array_filter () , aber leistungsfähiger. Zum Beispiel können wir in einer Kette arbeiten:
$users = collect([
['name' => 'Tom', 'email' => 'tom@m66.net'],
['name' => 'Jerry', 'email' => null],
['name' => 'Spike', 'email' => ''],
]);
$filtered = $users->filter(function ($user) {
return !empty($user['email']);
});
Sie können auch Filter () direkt verwenden, um die Logik zu vereinfachen:
$filtered = $users->filter(fn($user) => !empty($user['email']));
Ausgabe:
[
['name' => 'Tom', 'email' => 'tom@m66.net'],
]
Angenommen, Sie entwickeln eine Benutzer-Suchfunktion, und das Front-End übergibt einige optionale Parameter und möchten nur eine Abfrage erstellen, die nicht leere Bedingungen enthält:
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'));
}
Auf diese Weise können Sie flexible Abfragebedingungen basierend auf den tatsächlichen Eingaben erstellen, um ungültige Abfragen wie WO ('', '') zu vermeiden.
Array_Filter () ist ein einfaches, aber sehr leistungsfähiges Werkzeug. Bei der Verwendung von Laravels Anfrage und Sammlung kann dies die Effizienz der Datenreinigung und die Lesbarkeit der Code erheblich verbessern.
Wenn Sie Array_filter () in Ihrem Projekt nicht verwendet haben, können Sie es jetzt genauso gut versuchen und es zu einem guten Helfer machen, wenn Sie Laravel schreiben!