Dans le développement quotidien de PHP, le filtrage des données est une opération courante, en particulier pour les structures de données de réseau. Array_Filter () est une fonction puissante fournie par PHP, qui peut rapidement filtrer les éléments du tableau. Mais dans les projets réels, les règles de filtrage ne sont souvent pas écrites en code, mais proviennent de configurations externes (telles que des bases de données, des fichiers de configuration ou des interfaces distantes). Cet article présentera comment combiner array_filter () avec une configuration externe pour implémenter un mécanisme de filtrage de données dynamique.
La fonction de Array_Filter () est d'itérer à travers chaque élément du tableau et de déterminer si l'élément est conservé via la fonction de rappel. L'exemple de code est le suivant:
$data = [1, 2, 3, 4, 5];
// Seuls même les nombres sont conservés
$result = array_filter($data, function ($item) {
return $item % 2 === 0;
});
print_r($result);
// Sortir:Array ( [1] => 2 [3] => 4 )
Par défaut, si la fonction de rappel n'est pas adoptée, Array_Filter () filtrera "False Value" dans le tableau (telles que 0 , null , false , chaînes vides, etc.).
Supposons que nous ayons une gamme de données utilisateur, chaque utilisateur a des champs d'âge et d'état . Nous voulons définir des conditions de filtrage dynamiquement basées sur des configurations externes, par exemple:
$users = [
['name' => 'Alice', 'age' => 25, 'status' => 'active'],
['name' => 'Bob', 'age' => 30, 'status' => 'inactive'],
['name' => 'Charlie', 'age' => 22, 'status' => 'active'],
];
Les configurations externes peuvent provenir d'un fichier de configuration ou d'une demande distante, telle que:
$config = [
'min_age' => 23,
'status' => 'active',
];
Nous pouvons l'utiliser en combinaison comme ceci:
function filterUsers(array $users, array $config): array
{
return array_filter($users, function ($user) use ($config) {
if (isset($config['min_age']) && $user['age'] < $config['min_age']) {
return false;
}
if (isset($config['status']) && $user['status'] !== $config['status']) {
return false;
}
return true;
});
}
$filteredUsers = filterUsers($users, $config);
print_r($filteredUsers);
Résultat de sortie:
Array
(
[0] => Array
(
[name] => Alice
[age] => 25
[status] => active
)
)
Si la configuration provient d'une interface distante, par exemple:
$configUrl = 'https://api.m66.net/user_filter_config';
// Simuler pour obtenir la configuration
$configJson = file_get_contents($configUrl);
$config = json_decode($configJson, true);
Ensuite, passez-le dans la fonction FilterUsers () définie plus tôt pour implémenter le filtrage dynamique.
Remarque: Dans une utilisation réelle, n'oubliez pas de gérer les exceptions du réseau et les erreurs d'analyse JSON pour éviter les interruptions du programme.
En utilisant Array_Filter () avec des configurations externes, nous pouvons implémenter la logique de filtrage de données hautement flexible. Cette méthode convient à divers scénarios commerciaux tels que le contrôle de l'autorisation de l'utilisateur, le filtrage d'affichage du contenu, le filtrage des journaux, etc. La maîtrise de ce modèle peut rendre votre code plus configurable, facile à maintenir et évolutif.