Position actuelle: Accueil> Derniers articles> Exemple d'application pratique de Array_Filter () dans Laravel

Exemple d'application pratique de Array_Filter () dans Laravel

M66 2025-06-04

Au cours du processus de développement quotidien de Laravel, nous rencontrons souvent des scénarios où les données "non valides" dans le réseau doivent être nettoyées. Par exemple, les champs qui ne sont pas remplis dans le formulaire, les valeurs vides dans les paramètres de l'API ou les éléments de données doivent être filtrés en fonction de certaines logiques. Dans PHP, Array_Filter () est un outil puissant pour faire face à ces problèmes.

Bien que Array_Filter () soit une fonction PHP native, il a également un scénario d'application très large dans le projet Laravel. Ensuite, nous vous ferons passer pas à pas sur quelques exemples réels pour l'utiliser gracieusement dans votre projet Laravel.

Utilisation de base: supprimez les chaînes nulles ou vides d'un tableau

L'un des scénarios les plus courants est lorsque l'utilisateur soumet un formulaire, mais certains champs sont vides. Nous voulons uniquement traiter les champs non vides.

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

// utiliser array_filter Filtre les valeurs vides(Il sera supprimé par défaut false、null、''、0)
$filtered = array_filter($data);

dd($filtered);

Sortir:

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

Dans Laravel, ce traitement est souvent utilisé pour nettoyer après avoir reçu des données demandées dans le contrôleur:

 public function store(Request $request)
{
    $data = array_filter($request->only(['name', 'email', 'phone', 'age']));
    
    // La logique suivante ne traite que des champs non vides
    User::create($data);

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

Filtres personnalisés: gardez les numéros mais supprimez les chaînes vides

La par défaut array_filter () supprime toutes les "fausses valeurs", y compris le nombre 0 et la chaîne "0". Et si vous voulez simplement supprimer les chaînes vides et garder les 0 valides?

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

// Rappels personnalisés,Filtre uniquement les cordes vides
$filtered = array_filter($data, function ($value) {
    return $value !== '';
});

Sortir:

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

Cette méthode d'écriture est très pratique dans la gestion de l'état de l'ordre, de la gamme de prix et d'autres logiques, évitant la suppression d'erreur de "0" efficace.

Utiliser en combinaison avec les collections

La collection de Laravel fournit également une méthode filtre () similaire, similaire à array_filter () , mais plus puissante. Par exemple, nous pouvons opérer dans une chaîne:

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

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

Vous pouvez également utiliser Filter () directement pour simplifier la logique:

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

Sortir:

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

Scénario pratique: critères de recherche de filtre dans les demandes

Supposons que vous développez une fonction de recherche d'utilisateurs, et que le frontal passe certains paramètres facultatifs, et vous souhaitez simplement créer une requête contenant des conditions non vides:

 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'));
}

De cette façon, vous pouvez construire de manière flexible des conditions de requête en fonction de l'entrée réelle pour éviter les requêtes non valides telles que Where ('', '') .

Résumer

Array_Filter () est un outil simple mais très puissant. Lorsqu'il est utilisé avec la demande et la collecte de Laravel, il peut considérablement améliorer l'efficacité du nettoyage des données et de la lisibilité au code.

Si vous n'avez pas utilisé array_filter () dans votre projet, vous pourriez aussi bien l'essayer maintenant et en faire un bon aide lorsque vous écrivez Laravel!