Dans le développement quotidien de PHP, nous devons souvent comparer les différences entre deux tableaux, en particulier lorsque ces tableaux sont analysés à partir des données JSON. La fonction Array_Diff () peut nous aider à trouver des éléments qui existent dans le premier tableau mais pas dans le deuxième tableau. Cet article expliquera comment utiliser Array_Diff () correctement lors du traitement des données JSON.
La fonction Array_Diff () de PHP est utilisée pour comparer deux tableaux ou plus et des valeurs de retour qui existent dans le premier tableau mais pas dans d'autres tableaux:
$array1 = ["a", "b", "c", "d"];
$array2 = ["b", "d"];
$result = array_diff($array1, $array2);
print_r($result);
// Sortir:Array ( [0] => a [2] => c )
Habituellement, nous obtiendrons des données de format JSON à partir de l'API ou des fichiers externes, les convertirons en un tableau à l'aide de JSON_DECODE () , puis utilisez Array_Diff () pour comparaison.
$json1 = '["apple", "banana", "cherry", "date"]';
$json2 = '["banana", "date", "fig"]';
// Décoder dans un tableau
$array1 = json_decode($json1, true);
$array2 = json_decode($json2, true);
// Comparaison des différences
$diff = array_diff($array1, $array2);
print_r($diff);
// Sortir:Array ( [0] => apple [2] => cherry )
Gardez la structure de données cohérente : json_decode () renvoie l'objet par défaut, et le deuxième paramètre doit être défini sur TRUE pour obtenir le tableau associatif ou le tableau d'index.
Le nom de clé n'affecte pas le résultat : array_diff () ne compare que les valeurs et ne considère pas le nom de clé.
Le type de données doit être cohérent : si un tableau est un entier et que l'autre est un nombre sous la forme d'une chaîne (telle que "1" vs 1 ), elle peut provoquer une inexactitude. Vous pouvez utiliser array_map () pour unifier le type:
$array1 = array_map('strval', $array1);
$array2 = array_map('strval', $array2);
Supposons que vous synchronisez les données de deux systèmes, l'une est les données JSON fournies par l'API distante, et l'autre est des enregistrements de la base de données locale. Vous pouvez découvrir les nouveaux projets que vous devez ajouter de la manière suivante:
$remoteJson = file_get_contents('https://api.m66.net/data/items');
$remoteData = json_decode($remoteJson, true);
$localData = ["item_101", "item_102", "item_103"]; // De la base de données ID Liste
$newItems = array_diff($remoteData, $localData);
print_r($newItems);
// Sortir:Éloigné mais localement non item ID Liste
L'utilisation de Array_Diff () combinée avec JSON_DECODE () peut comparer très efficacement les différences de données JSON. Il est très utile pour gérer la synchronisation des données, la vérification des données, les invites de changement de données et d'autres scénarios. N'oubliez pas de prêter attention à l'unité de la structure des données et de type lorsque vous l'utilisez dans une utilisation réelle pour éviter des situations inexactes.
Si vous développez des fonctions similaires, il est recommandé d'encapsuler cette partie de la logique dans une fonction ou une classe de service pour améliorer la réutilisabilité du code et la maintenabilité.