Position actuelle: Accueil> Derniers articles> Construisez des adaptateurs pour comparer les structures du tableau de différentes sources

Construisez des adaptateurs pour comparer les structures du tableau de différentes sources

M66 2025-06-06

Dans PHP, Array_Diff_uassoc est une fonction pour comparer deux tableaux ou plus. Il comparera non seulement les valeurs du tableau, mais aussi leurs clés. La fonction principale de cette fonction est de renvoyer toutes les paires de valeurs clés qui existent dans le premier tableau mais qui ne sont pas dans d'autres tableaux, et compareront les touches via des fonctions de rappel définies par l'utilisateur. En utilisant de manière appropriée Array_Diff_uassoc , nous pouvons construire un adaptateur pour comparer les structures Array à partir de différentes sources.

Cet article vous montrera comment utiliser la fonction Array_Diff_uassoc pour créer un adaptateur pour comparer les différences de structure de données par rapport aux différentes sources, en particulier lorsque vous devez comparer les noms clés en fonction de certaines règles métier.

1. Concepts de base

Définition de la fonction Array_Diff_uassoc

 array_diff_uassoc ( array $array1 , array $array2 , callable $key_compare_func ) : array
  • $ array1 : le premier tableau.

  • $ array2 : le deuxième tableau.

  • $ key_compare_func : une fonction de rappel utilisée pour comparer deux touches.

Cette fonction renvoie les paires de valeurs clés qui existent dans $ array1 et ne sont pas dans $ array2 . La clé de comparaison se fait via la fonction de rappel $ key_compare_func .

Le rôle de key_compare_func

La fonction de rappel KEY_COMPARE_FUNC doit accepter deux paramètres, à savoir les touches de deux tableaux. Il doit revenir:

  • Un entier inférieur à 0: si la première touche est inférieure à la deuxième clé;

  • Renvoie 0: si les deux clés sont égales;

  • Un entier supérieur à 0: si la première clé est supérieure à la deuxième clé.

Cette méthode de comparaison est très adaptée à une utilisation lorsque vous devez comparer les clés en fonction de règles spécifiques.

2. Idées d'adaptateurs de construction

Nous utiliserons un exemple simple pour montrer comment construire un adaptateur avec array_diff_uassoc et comparer les structures du tableau de différentes sources.

Supposons que nous ayons deux sources de données différentes, chacune contenant un tableau de paires de valeurs clés, et nous devons comparer ces tableaux pour découvrir les différences entre elles.

Exemple de code

 <?php

// Le premier tableau(source1)
$array1 = [
    'id' => 1,
    'name' => 'Alice',
    'email' => 'alice@m66.net',
    'age' => 28
];

// Le deuxième tableau(source2)
$array2 = [
    'id' => 2,
    'name' => 'Bob',
    'email' => 'bob@m66.net',
    'address' => '123 Main St'
];

// Fonction de comparaison de clés personnalisée
function key_compare($key1, $key2) {
    // Si les deux clés sont égales,retour 0
    return strcmp($key1, $key2);
}

// utiliser array_diff_uassoc Comparez les tableaux
$diff = array_diff_uassoc($array1, $array2, 'key_compare');

// Différence de sortie
print_r($diff);

?>

Analyse de code:

  1. Définition du tableau : nous définissons deux tableaux $ array1 et $ array2 , qui représentent les données de différentes sources. Ces tableaux ont des structures différentes (telles que différents noms de clés et données).

  2. Fonction de comparaison de touches personnalisée : key_compare est la fonction de rappel que nous avons définie, qui utilise strcmp () pour comparer deux touches. Si les deux clés sont égales, retournez 0; Sinon, renvoyez le résultat de comparaison correspondant.

  3. Appelez Array_Diff_uassoc : nous comparons $ array1 et $ array2 via la fonction array_diff_uassoc . À l'heure actuelle, il découvrira les différentes parties des touches dans les deux tableaux en fonction de la fonction de comparaison des touches personnalisée.

  4. Différence de sortie : print_r ($ diff) produit la pièce de différence dans les deux tableaux.

Exemple de sortie:

 Array
(
    [email] => alice@m66.net
    [age] => 28
)

Expliquez la sortie:

La sortie ci-dessus montre qu'il existe deux clés ( e-mail et âge ) dans $ array1 , qui n'existent pas dans $ array2 . C'est la partie de la différence de ce que nous appelons les deux tableaux.

3. Scénarios d'application des adaptateurs

Utilisez Array_Diff_uassoc pour construire des adaptateurs, qui conviennent particulièrement aux scénarios suivants:

  1. Comparaison des données multi-sources : lors du traitement des données à partir de plusieurs sources, vous pouvez rencontrer différentes structures. En utilisant Array_Diff_uassoc , vous pouvez comparer de manière flexible ces sources de données et découvrir leurs différences.

  2. Conversion complexe de la structure des données : parfois, nous devons convertir les données dans différents formats en format unifié selon les règles métier. Array_Diff_uassoc peut nous aider à identifier les pièces incompatibles, puis à effectuer des ajustements.

  3. Comparaison du profil : Lors de la comparaison des fichiers de configuration pour différents environnements, Array_Diff_uassoc peut nous aider à identifier facilement les différences entre les différentes configurations, en particulier lorsque les règles de nom de clé pour ces configurations sont différentes.

4. Résumé

Array_Diff_uassoc est une puissante fonction PHP qui peut nous aider à utiliser les fonctions de comparaison des clés personnalisées pour juger avec précision les différences entre elles lors de la comparaison des tableaux de différentes sources. Dans les applications pratiques, nous pouvons implémenter le mode adaptateur via l'informatique pour s'adapter à diverses structures de données et besoins commerciaux.

Avec l'exemple ci-dessus, nous pouvons voir comment comparer les structures Array à l'aide d'Array_Diff_uassoc et d'implémenter la fonctionnalité d'adaptateur flexible basée sur des règles personnalisées. J'espère que cet article peut vous aider à mieux comprendre et appliquer cette fonction!