Position actuelle: Accueil> Derniers articles> array_flip () + array_diff_key () implémente le fonctionnement différentiel

array_flip () + array_diff_key () implémente le fonctionnement différentiel

M66 2025-05-18

En PHP, il existe de nombreuses façons de traiter les ensembles de différence de tableau. En plus de la fonction array_diff () commune, le calcul de la différence flexible peut être réalisé via la méthode "clé" à l'aide de fonctions array_flip () et array_diff_key () . Cette méthode est particulièrement efficace et pratique lors de la gestion des "différences de correspondance de la valeur clé" entre deux tableaux.

1. Examen des concepts de base

1. Array_flip ()

array_flip () interviendra les clés et les valeurs du tableau. Cela signifie que la valeur d'origine deviendra une clé et que la clé deviendra une valeur.

 $input = ['apple' => 'red', 'banana' => 'yellow'];
$result = array_flip($input);

// Sortir:['red' => 'apple', 'yellow' => 'banana']

Remarque: S'il y a des valeurs en double dans le tableau d'origine, Array_flip () rejette les doublons et seul le dernier est conservé.

2. Array_diff_key ()

array_diff_key () est utilisé pour comparer les clés de deux tableaux ou plus et des paires de valeurs de clé de retour qui existent dans le premier tableau mais n'apparaissent pas dans d'autres tableaux.

 $array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['b' => 99];

$result = array_diff_key($array1, $array2);

// Sortir:['a' => 1, 'c' => 3]

2. Utilisez Array_flip + Array_Diff_Key pour implémenter "Définir la différence de valeur"

Supposons que nous ayons deux tableaux et que nous voulions trouver la valeur unique (c'est-à-dire l'ensemble de différence) dans le premier tableau, nous pouvons habilement utiliser la combinaison de Array_flip () et Array_Diff_Key () pour y parvenir.

Exemple de code:

 $groupA = ['apple', 'banana', 'cherry'];
$groupB = ['banana', 'grape'];

// Convertir la valeur en clé
$flippedA = array_flip($groupA);
$flippedB = array_flip($groupB);

// Opération différentielle(passer key Différence)
$diff = array_diff_key($flippedA, $flippedB);

// Restauré à un tableau de valeur normal
$uniqueToA = array_keys($diff);

print_r($uniqueToA);

Résultat de sortie:

 Array
(
    [0] => apple
    [1] => cherry
)

Nous avons trouvé avec succès la valeur qui est dans $ groupa mais pas dans $ GroupB .

3. Exemples de scénarios d'application

Cette méthode est très adaptée aux scénarios suivants:

  • Découvrez rapidement la différence entre deux tableaux d'étiquettes;

  • Filtrage d'autorisation de l'utilisateur (découvrez les fonctionnalités que l'utilisateur a la permission mais le module n'est pas utilisé);

  • Formez plusieurs différences de comparaison d'options, etc.

Par exemple, vous développez un système d'autorisation de l'utilisateur et les autorisations de l'utilisateur actuel sont:

 $userPermissions = ['edit', 'delete', 'create'];

Les opérations prises en charge par un certain module sont:

 $moduleSupports = ['edit', 'create'];

Vous pouvez découvrir les autorisations que l'utilisateur a, mais le module ne prend pas en charge de la même manière:

 $diff = array_keys(array_diff_key(
    array_flip($userPermissions),
    array_flip($moduleSupports)
));

// Sortir ['delete']

4. Résumé

Bien que PHP fournit un ensemble de différence directement utilisé pour l'évaluation, dans certains scénarios plus raffinés (comme lorsque la valeur est unique), la combinaison de Array_flip ( ) et Array_Diff_Key () est non seulement efficace, mais fournit également des méthodes de fonctionnement plus flexibles.

Ce type d'astuce peut apporter des performances plus élevées, en particulier lorsqu'ils traitent de grands tableaux ou lors de la comparaison des opérateurs.