array_diff_uassoc est une fonction utilisée en PHP pour comparer deux tableaux. Il compare non seulement les valeurs du tableau, mais compare également les clés du tableau. Dans certains cas, nous pouvons vouloir utiliser une fonction de comparaison personnalisée lors de la comparaison. Cette fonction de comparaison personnalisée peut souvent ajouter une logique supplémentaire lors de la comparaison des valeurs et des clés du tableau. Cependant, si vous avez besoin d'utiliser des variables externes dans les fonctions de comparaison (telles que les variables globales ou les paramètres transmis à la fonction), vous devez accorder une attention particulière à la façon de vous référer correctement à ces variables externes dans une fonction personnalisée.
Cet article expliquera comment utiliser correctement les variables externes dans les fonctions de comparaison personnalisées lors de l'utilisation d'Array_Diff_uassoc .
array_diff_uassoc est une fonction de tableau fournie par PHP qui prend plusieurs tableaux sous forme de paramètres et renvoie un nouveau tableau contenant des éléments dans le premier tableau mais pas dans d'autres tableaux. Il est similaire à array_diff_assoc , mais permet à l'utilisateur de fournir une fonction de comparaison personnalisée pour comparer les clés aux tableaux.
Le prototype de fonction est le suivant:
array array_diff_uassoc ( array $array1 , array $array2 , array ...$arrays , callable $key_compare_func )
$ Array1 est le premier tableau utilisé pour la comparaison.
$ array2, ... $ Arrays est un ou plusieurs tableaux de comparaison.
$ key_compare_func est une fonction de rappel personnalisée utilisée pour comparer les touches des tableaux.
Lors de l'écriture de fonctions de comparaison personnalisées, nous devons parfois utiliser des variables externes (telles que certains paramètres globaux ou paramètres de l'extérieur de la fonction). Cependant, dans PHP, les fonctions anonymes (fermetures) ne peuvent pas accéder directement aux variables de portée externe à moins que nous passons explicitement ces variables à la fonction.
Supposons que nous ayons deux tableaux, $ array1 et $ array2 , nous voulons comparer les clés de ces deux tableaux et utiliser une variable définie en externe (par exemple, un seuil défini) pendant la comparaison. Nous utiliserons un exemple pour montrer comment le faire.
<?php
// Variables externes:Un seuil
$threshold = 5;
// Fonctions de comparaison personnalisées
function compare_keys($a, $b) {
global $threshold; // Référence Variables globales externes $threshold
// Si les deux clés sont égales,retour 0
if ($a === $b) {
return 0;
}
// Comparaison utilisant des seuils externes
return abs($a - $threshold) < abs($b - $threshold) ? -1 : 1;
}
// Comparaison de deux tableaux
$array1 = [3 => 'apple', 7 => 'banana', 10 => 'cherry'];
$array2 = [2 => 'pear', 7 => 'grape', 9 => 'orange'];
// utiliser array_diff_uassoc Et passer dans une fonction de comparaison personnalisée
$result = array_diff_uassoc($array1, $array2, 'compare_keys');
print_r($result);
?>
Variable globale SEURTHOLD : Nous définissons une variable de seuil $ externe pour définir une valeur "référence" lorsque nous comparons les clés.
Fonction de comparaison personnalisée Compare_keys : Cette fonction accepte deux paramètres $ A et $ B , représentant les deux touches comparées. Nous utilisons le seuil Global $ pour permettre à cette fonction d'accéder à la variable de seuil $ externe. Dans la fonction, nous calculons la distance entre la clé et le seuil $ et retournons le résultat de comparaison.
Utilisation de Array_Diff_uassoc : Lors de l'appel Array_Diff_uassoc , nous passons les Arrays $ array1 et $ array2 comme paramètres et passons dans la fonction de comparaison personnalisée compare_keys . Cette fonction est automatiquement appelée lors de la comparaison des touches de tableau.
Résultat de sortie : imprimez le résultat via print_r , vous pouvez voir quels éléments sont dans $ array1 mais pas dans $ array2 , et sont basés sur nos règles de comparaison personnalisées.
Lorsque vous utilisez Array_Diff_Uassoc de PHP, si vous avez besoin d'utiliser des variables externes dans une fonction de comparaison personnalisée, vous pouvez l'implémenter de la manière suivante:
Référence Variables globales à l'aide de mots clés globaux .
Passez des variables externes en tant que paramètres à une fonction de comparaison personnalisée (par exemple, en utilisant le mot-clé Utiliser pour introduire des variables externes dans une fonction anonyme).
Assurez-vous que la valeur de retour de la fonction de comparaison répond aux exigences de Array_Diff_uassoc et gère correctement la logique de comparaison des clés.
Espérons que cet exemple vous aide à comprendre comment utiliser correctement les variables externes dans array_diff_uassoc et être pratique dans le développement réel.