Position actuelle: Accueil> Derniers articles> Techniques de combinaison de array_filter () et array_diff_ukey ()

Techniques de combinaison de array_filter () et array_diff_ukey ()

M66 2025-05-15

Dans la programmation PHP, le traitement des tableaux est l'une des opérations les plus courantes. Le traitement efficace des tableaux peut non seulement améliorer l'efficacité de l'exécution du code, mais également réduire l'utilisation de la mémoire. PHP fournit de nombreuses fonctions de tableau intégrées, parmi lesquelles Array_Filter () et Array_Diff_Ukey () sont deux fonctions très puissantes qui peuvent nous aider à améliorer l'efficacité lors du traitement des tableaux. Cet article présentera comment utiliser ces deux fonctions ingénieusement pour optimiser le fonctionnement des tableaux PHP.

1. Introduction à array_filter () et array_diff_ukey ()

Tout d'abord, comprenons rapidement les utilisations de base de ces deux fonctions:

array_filter ()

La fonction Array_Filter () est utilisée pour filtrer les éléments dans un tableau, et il détermine quels éléments doivent être conservés en fonction de la fonction de rappel spécifiée. Par défaut, Array_Filter () conservera uniquement des éléments qui transmettent la fonction de rappel à true .

 $arr = [1, 2, 3, 4, 5];
$result = array_filter($arr, function($value) {
    return $value % 2 == 0;  // Gardez les nombres uniformes
});
print_r($result);

Sortir:

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

array_diff_ukey ()

La fonction array_diff_ukey () est utilisée pour comparer les noms de clés de deux tableaux et les paires de valeurs de clé de retour qui existent dans le premier tableau mais n'existent pas dans le deuxième tableau. Contrairement à array_diff () , array_diff_ukey () fonctionne en fonction des noms de clés du tableau.

 $arr1 = ["a" => 1, "b" => 2, "c" => 3];
$arr2 = ["b" => 4, "c" => 5, "d" => 6];
$result = array_diff_ukey($arr1, $arr2);
print_r($result);

Sortir:

 Array
(
    [a] => 1
)

2. Utilisez array_filter () et array_diff_ukey () en combinaison

Lorsque vous devez faire des comparaisons complexes dans plusieurs tableaux, array_filter () et array_diff_ukey () peuvent être utilisés complémentaires pour obtenir un filtrage de données et des calculs différentiels efficaces. Par exemple, supposons que nous ayons deux tableaux, l'un est un tableau complet et l'autre est un tableau de condition de filtrage, nous pouvons d'abord utiliser array_diff_ukey () pour comparer la différence en fonction du nom de clé, puis utiliser array_filter () pour filtrer les données dont nous avons besoin en fonction de la valeur.

Exemple de code:

Supposons que nous ayons deux tableaux, dont l'un stocke les informations de commande de l'utilisateur et l'autre stocke l'ID utilisateur désactivé. Nous devons filtrer les commandes d'utilisateurs non resservées à partir du tableau de commande.

 // Tableau complet des commandes des utilisateurs
$orders = [
    'user1' => ['order_id' => 101, 'amount' => 250],
    'user2' => ['order_id' => 102, 'amount' => 300],
    'user3' => ['order_id' => 103, 'amount' => 450],
    'user4' => ['order_id' => 104, 'amount' => 200],
];

// Utilisateurs handicapés ID Tableau
$disabled_users = ['user2', 'user4'];

// utiliser array_diff_ukey() Filtrer les commandes d'utilisateurs handicapés
$active_orders = array_diff_ukey($orders, $disabled_users);

// utiliser array_filter() Montant de la commande de filtre,La quantité de réserve est supérieure à 250 Ordres
$filtered_orders = array_filter($active_orders, function($order) {
    return $order['amount'] > 250;
});

print_r($filtered_orders);

Sortir:

 Array
(
    [user3] => Array
        (
            [order_id] => 103
            [amount] => 450
        )
)

Dans cet exemple, nous utilisons d'abord array_diff_ukey () pour supprimer l'utilisateur désactivé du tableau de commande, puis utilisons array_filter () pour filtrer les commandes valides restantes, et enfin nous obtenons une commande avec un montant supérieur à 250.

3. Avantages de la combinaison

  1. Améliorer la lisibilité du code : en traitant les données par étapes, le code devient plus facile à comprendre. Tout d'abord, la différence est calculée en fonction du nom de la clé, puis les valeurs sont filtrées.

  2. Évitez les calculs inutiles : nous évitons le traitement supplémentaire de données non pertinentes en utilisant d'abord array_diff_ukey () pour enregistrer les ressources informatiques.

  3. Flexibilité : vous pouvez combiner librement ces deux fonctions pour gérer de manière flexible le filtrage des données et la comparaison dans différents scénarios.

4. Résumé

En combinant intelligemment array_filter () et array_diff_ukey () , nous pouvons traiter les données Array plus efficacement dans PHP. Cette approche peut nous aider à réduire les calculs inutiles, à améliorer la lisibilité du code et à fournir plus de flexibilité pour le traitement et le débogage des données ultérieures.

J'espère que grâce à cet article, vous pouvez mieux comprendre la combinaison de ces deux fonctions et les appliquer à des projets PHP réels, améliorant ainsi l'efficacité du traitement des réseaux.