Lors du développement d'API, nous devons souvent comparer le contenu de deux charges utiles afin de déterminer leurs différences. Par exemple, lors de la mise à jour des informations de l'utilisateur, comparez les différences entre les données nouvelles et anciennes ou lors de la débogage de l'interface, vérifiez si les données retournées sont cohérentes avec les données attendues. PHP fournit une fonction très utile - array_diff_assoc , qui peut nous aider à comparer les différences entre deux tableaux. Voici une explication détaillée de la façon d'utiliser cette fonction pour comparer le contenu de la charge utile.
Array_Diff_assoc est une fonction intégrée en PHP qui compare les paires de valeurs clés de deux tableaux pour trouver des éléments qui existent dans le premier tableau mais pas dans le deuxième tableau. Contrairement à Array_Diff , Array_Diff_assoc compare non seulement les valeurs, mais compare également les noms de clés. L'élément n'est considéré comme différent que lorsque le nom et la valeur de la clé ne correspondent pas.
array_diff_assoc(array $array1, array $array2): array
$ array1 : le premier tableau, en tant que tableau de référence à comparaison.
$ array2 : le deuxième tableau, par rapport au premier tableau.
Cette fonction renvoie un tableau contenant des éléments qui existent dans $ array1 mais pas dans $ array2 .
Supposons que nous ayons deux charges utiles au format JSON, représentant respectivement les données anciennes et nouvelles utilisateur, dans le format comme suit:
{
"user_id": 12345,
"name": "Zhang San",
"email": "zhangsan@m66.net",
"phone": "1234567890"
}
{
"user_id": 12345,
"name": "Zhang San",
"email": "zhangsan@m66.net",
"phone": "0987654321"
}
Nous voulons comparer les différences de données dans ces deux charges utiles JSON et vérifier si leurs paires de valeurs clés sont cohérentes. Ici, nous pouvons utiliser array_diff_assoc pour l'implémenter.
Tout d'abord, nous devons convertir ces deux données JSON en tableaux PHP avant de pouvoir les comparer.
<?php
// Anciennes données
$old_payload = '{"user_id": 12345, "name": "Zhang San", "email": "zhangsan@m66.net", "phone": "1234567890"}';
// Nouvelles données
$new_payload = '{"user_id": 12345, "name": "Zhang San", "email": "zhangsan@m66.net", "phone": "0987654321"}';
// décodage JSON Les données sont PHP Tableau
$old_data = json_decode($old_payload, true);
$new_data = json_decode($new_payload, true);
// 输出Tableau查看结果
var_dump($old_data);
var_dump($new_data);
?>
Avec la fonction Array_Diff_assoc , nous pouvons facilement trouver la différence entre deux tableaux.
<?php
// Obtenez la différence
$differences = array_diff_assoc($old_data, $new_data);
// Différence de sortie
if (!empty($differences)) {
echo "Différences de données:\n";
print_r($differences);
} else {
echo "Données cohérentes,Aucune différence。\n";
}
?>
Différences de données:
Array
(
[phone] => 1234567890
)
Comme indiqué ci-dessus, le résultat montre que la valeur du téléphone est différente dans les anciennes données et les nouvelles données, montrant la valeur du téléphone de 1234567890 dans les anciennes données. C'est exactement la différence que nous espérons passer la comparaison.
Débogage de l'API : Lors du développement d'une API, vous devrez peut-être comparer les données renvoyées par l'interface avec les résultats attendus. Utilisez Array_Diff_assoc pour afficher rapidement les différences et aider les développeurs à localiser les problèmes.
Mise à jour des données : Dans le scénario de la mise à jour du profil utilisateur, cette méthode peut être utilisée pour comparer les différences entre les données nouvelles et anciennes pour déterminer quels champs ont changé.
Journalisation : Lors de l'enregistrement des journaux de comportement des utilisateurs ou des changements de données, comprenez le contenu spécifique des changements de données, afin de faciliter une analyse ultérieure.