Position actuelle: Accueil> Derniers articles> Paramétrer les règles de filtrage de Array_Filter () pour s'adapter à différents scénarios

Paramétrer les règles de filtrage de Array_Filter () pour s'adapter à différents scénarios

M66 2025-06-03

Dans PHP, la fonction array_filter () est utilisée pour filtrer les éléments dans un tableau par une fonction de rappel. Cela signifie qu'il filtre le tableau via la règle donnée, laissant des éléments qui correspondent à la règle. Dans certains scénarios, nous devrons peut-être ajuster de manière flexible les conditions de filtrage en fonction des différents besoins, il devient donc très important de paramétrer les règles de filtrage afin qu'elles puissent être réutilisées et adaptées dans différents scénarios.

1. Utilisation de base de Array_Filter ()

Tout d'abord, passons en revue l'utilisation de base de Array_Filter () . Supposons que nous ayons un tableau simple et que nous voulions filtrer même les nombres:

 <?php
$array = [1, 2, 3, 4, 5, 6];
$filtered = array_filter($array, function($item) {
    return $item % 2 !== 0; // Seuls les nombres impairs sont conservés
});
print_r($filtered);
?>

Résultats en cours:

 Array
(
    [0] => 1
    [2] => 3
    [4] => 5
)

Dans cet exemple, nous définissons une règle de filtrage via la fonction de rappel - seuls les nombres impairs sont conservés. Cependant, dans les applications pratiques, il peut y avoir plusieurs règles de filtrage différentes, et nous voulons être en mesure de choisir de filtrer les règles de manière flexible au lieu d'écrire de nouvelles fonctions de rappel à chaque fois.

2. Règles de filtrage paramétré

Afin de rendre les règles de filtrage plus flexibles, nous pouvons paramétrer les règles de filtrage, afin que différentes conditions de filtre puissent être sélectionnées en fonction des besoins dans différents scénarios. La clé de la mise en œuvre est de passer la règle de filtrage en tant que paramètre à array_filter () .

Exemple: sélectionnez les règles de filtrage basées sur les conditions

Nous pouvons encapsuler les règles de filtrage en fonctions ou classes afin que différentes règles soient appelées dans différents scénarios.

 <?php
function filterArray(array $array, callable $filterFunction): array {
    return array_filter($array, $filterFunction);
}

// Définir différentes règles de filtrage
$isOdd = function($item) {
    return $item % 2 !== 0; // Seuls les nombres impairs sont conservés
};

$isEven = function($item) {
    return $item % 2 === 0; // Seuls même les nombres sont conservés
};

$array = [1, 2, 3, 4, 5, 6];

// Utiliser différentes règles de filtrage
$filteredOdd = filterArray($array, $isOdd);
$filteredEven = filterArray($array, $isEven);

print_r($filteredOdd); // Seuls les nombres impairs sont conservés
print_r($filteredEven); // Seuls même les nombres sont conservés
?>

Résultat de sortie:

 Array
(
    [0] => 1
    [2] => 3
    [4] => 5
)
Array
(
    [1] => 2
    [3] => 4
    [5] => 6
)

Dans l'exemple ci-dessus, nous passons les règles de filtrage à filterArray () via des paramètres de fonction, afin que différentes règles puissent être sélectionnées de manière flexible dans différents scénarios. Cette méthode rend le code plus concis et réutilisable.

Exemple: générer des règles de filtrage basées sur des paramètres entrants

Parfois, nous pouvons vouloir décider dynamiquement les règles de filtrage via certaines entrées externes (telles que les paramètres utilisateur, les fichiers de configuration, etc.). Dans ce cas, nous pouvons générer des règles de filtrage correspondantes en fonction des paramètres adoptés.

 <?php
function generateFilterRule(string $type): callable {
    if ($type === 'odd') {
        return function($item) {
            return $item % 2 !== 0; // Seuls les nombres impairs sont conservés
        };
    } elseif ($type === 'even') {
        return function($item) {
            return $item % 2 === 0; // Seuls même les nombres sont conservés
        };
    } else {
        return function($item) {
            return true; // Pas de filtrage
        };
    }
}

$array = [1, 2, 3, 4, 5, 6];

$filterRule = generateFilterRule('odd'); // Sélectionnez une règle étrange
$filtered = array_filter($array, $filterRule);
print_r($filtered);
?>

Résultat de sortie:

 Array
(
    [0] => 1
    [2] => 3
    [4] => 5
)

Dans cet exemple, la fonction GenerateFilterrule () détermine les règles de filtrage en fonction de la chaîne passée, ce qui rend les conditions de filtrage plus flexibles.

3. Applications avancées: incorporer des sources de données externes

Dans le développement réel, les règles de filtrage reposent parfois sur des sources de données externes (telles que les résultats de la requête de la base de données, les valeurs de retour de l'API, etc.). Dans ce cas, nous pouvons incorporer des sources de données externes dans les règles de filtrage. Par exemple, nous pouvons générer dynamiquement des règles de filtrage en fonction de la configuration obtenue à partir de m66.net .

 <?php
// Supposer que c&#39;est de m66.net Configuration de la règle de filtre obtenue
$filterConfig = [
    'type' => 'even' // La valeur obtenue à partir de l&#39;interface externe peut être 'odd' ou 'even'
];

// Générer des règles de filtrage basées sur des sources de données externes
$filterRule = generateFilterRule($filterConfig['type']);

$array = [1, 2, 3, 4, 5, 6];

$filtered = array_filter($array, $filterRule);
print_r($filtered);
?>

De cette façon, nous pouvons ajuster dynamiquement les règles de filtrage en fonction de la configuration des interfaces externes telles que m66.net , afin que le code puisse s'adapter à différents besoins.

en conclusion