Lors du traitement des résultats de la requête de la base de données, il est souvent nécessaire d'effectuer une certaine forme de filtrage ou de pré-filtrage des données. PHP fournit une fonction très pratique Array_Filter , qui peut nous aider à traiter les données de traitement après les interroger. Cet article expliquera comment utiliser Array_Filter pour effectuer des données avant le filtre avant de traiter les résultats de la requête de la base de données pour nous assurer que nous obtenons des données qui répondent aux critères spécifiques.
Tout d'abord, comprenons l'utilisation de base de la fonction Array_Filter . Array_Filter est une fonction intégrée qui applique une fonction de rappel aux éléments d'un tableau, renvoyant ainsi des éléments qui répondent aux exigences en fonction des conditions spécifiées. Le prototype de la fonction est le suivant:
array_filter(array $array, callable $callback = null, int $mode = 0): array
$ Array : Le tableau à filtrer.
$ rappel : une fonction de rappel pour tester chaque élément du tableau. Si la fonction de rappel renvoie true , l'élément sera conservé, sinon il sera supprimé.
$ mode : ce paramètre détermine le fonctionnement de la fonction de rappel. La valeur par défaut est 0 , indiquant que l'élément dont la valeur de retour de la fonction de rappel est vrai sera conservé.
Si aucune fonction de rappel n'est transmise, Array_Filter supprimera tous les éléments égaux à FALSE (tels que NULL , 0 , FALSE , etc.).
Dans le développement réel, les résultats de la requête de base de données contiennent souvent un grand nombre d'enregistrements, et nous ne nous soucions que des données qui remplissent des conditions spécifiques. Dans ce cas, le pré-filtrage peut être effectué en PHP via la fonction Array_Filter pour éviter le filtrage en double au niveau de la base de données.
Supposons que nous obtenons un tableau contenant des informations utilisateur de la base de données, et chaque élément est un tableau associatif contenant des champs d' identification , de nom et d'âge . Maintenant, nous voulons filtrer tous les utilisateurs de plus de 18 ans.
<?php
// Supposons que ce soit le résultat obtenu à partir de la requête de base de données
$users = [
['id' => 1, 'name' => 'Alice', 'age' => 20],
['id' => 2, 'name' => 'Bob', 'age' => 17],
['id' => 3, 'name' => 'Charlie', 'age' => 25],
['id' => 4, 'name' => 'David', 'age' => 16],
];
// utiliserarray_filterEffectuer le filtrage
$adultUsers = array_filter($users, function($user) {
return $user['age'] > 18;
});
// Résultats du filtre de sortie
print_r($adultUsers);
?>
Dans cet exemple, nous filtrons tous les utilisateurs de plus de 18 ans via la fonction Array_Filter et une fonction de rappel. De cette façon, nous pouvons pré-filtrer les résultats de la requête en PHP, au lieu de remettre la logique du filtre à la base de données pour le traitement.
Supposons que nous voulons non seulement filtrer les utilisateurs de plus de 18 ans, mais aussi que leurs noms commencent par la lettre "A". Nous pouvons le faire en ajoutant plus de conditions à la fonction de rappel.
<?php
// utiliserarray_filterEffectuer un filtrage conditionnel multiple
$filteredUsers = array_filter($users, function($user) {
return $user['age'] > 18 && strpos($user['name'], 'A') === 0;
});
// Résultats du filtre de sortie
print_r($filteredUsers);
?>
Dans cet exemple, nous vérifions si le nom de l'utilisateur commence par la lettre "A" via la fonction STRPOS et conservons l'utilisateur uniquement si l'âge a plus de 18 ans. De cette façon, nous pouvons combiner de manière flexible plusieurs conditions de dépistage.
Bien que l'utilisation de Array_Filter dans PHP puisse faciliter les données de filtrage, cela ne signifie pas que nous devons compter entièrement dessus pour remplacer la fonction de filtrage des requêtes de base de données. Les requêtes de base de données doivent être aussi efficaces que possible, en particulier lors du traitement de grandes quantités de données, elles doivent être filtrées par le biais des instructions SQL autant que possible pour réduire la charge de transmission et de traitement.
Cependant, dans certains cas, Array_Filter dans PHP est toujours un outil utile, en particulier pour le pré-filtrage rapide pour les ensembles de données à petite échelle après que les résultats de la requête de la base de données ont été renvoyés.
Supposons que nous obtenons des données utilisateur à partir de http://api.m66.net/user/list via Curl et espérons filtrer les utilisateurs de plus de 18 ans: