Position actuelle: Accueil> Derniers articles> Pourquoi oublier de passer une fonction de comparaison personnalisée lors de l'utilisation de Array_Diff_uassoc conduit à une erreur?

Pourquoi oublier de passer une fonction de comparaison personnalisée lors de l'utilisation de Array_Diff_uassoc conduit à une erreur?

M66 2025-06-06

Dans PHP, array_diff_uassoc () est une fonction très utile qui compare les paires de valeurs clés de deux tableaux ou plus et trouve des différences en fonction des fonctions de comparaison de valeur clé personnalisées. Lorsque nous utilisons array_diff_uassoc () , si nous oublions de passer dans la fonction de comparaison personnalisée, nous rencontrerons un problème d'erreur.

Introduction à la fonction array_diff_uassoc ()

La fonction array_diff_uassoc () compare les paires de valeurs clés de deux tableaux ou plus et renvoie un tableau contenant des différences. Contrairement à array_diff_assoc () , array_diff_uassoc () nous permet de passer une fonction de comparaison personnalisée pour comparer les valeurs clés. La syntaxe est la suivante:

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

  • Array2 : Le deuxième tableau ou plus de tableaux sont utilisés pour la comparaison.

  • Value_Compare_Func : une fonction de comparaison personnalisée pour comparer les paires de valeurs clés dans un tableau.

Exemple de code

Voici un exemple simple montrant comment travailler correctement en utilisant array_diff_uassoc () :

 <?php
$array1 = [
    'a' => 1,
    'b' => 2,
    'c' => 3
];

$array2 = [
    'a' => 1,
    'b' => 3,
    'd' => 4
];

// Fonctions de comparaison personnalisées,Comparez les valeurs
function compare_values($value1, $value2) {
    return $value1 - $value2;
}

$result = array_diff_uassoc($array1, $array2, 'compare_values');

print_r($result);
?>

Résultat de sortie:

 Array
(
    [b] => 2
    [c] => 3
)

Dans le code ci-dessus, array_diff_uassoc () compare les paires de valeurs clés en deux tableaux en fonction de la fonction compare_values ​​et renvoie les paires de valeurs clés dans le tableau différent du tableau Array2 .

Pourquoi l'oubli de passer dans une fonction de comparaison personnalisée conduit-il à une erreur?

Si nous oublions de passer dans la fonction de comparaison personnalisée lors de l'appel Array_Diff_uassoc () , PHP lancera une erreur. Le troisième paramètre de la fonction array_diff_uassoc () est une fonction de rappel qui compare les valeurs des éléments du tableau. Si cette fonction de rappel n'est pas transmise, PHP ne peut pas effectuer des comparaisons de valeur clé et une erreur se produira naturellement.

Exemple d'erreur:

 <?php
$array1 = [
    'a' => 1,
    'b' => 2,
    'c' => 3
];

$array2 = [
    'a' => 1,
    'b' => 3,
    'd' => 4
];

// 忘记传入Fonctions de comparaison personnalisées
$result = array_diff_uassoc($array1, $array2);

print_r($result);
?>

Erreur de sortie:

 Warning: array_diff_uassoc() expects parameter 3 to be a valid callback in /path/to/script.php on line X

Comme indiqué ci-dessus, PHP lancera un avertissement que notre troisième paramètre (fonction de comparaison personnalisée) doit être une fonction de rappel valide. Si nous ne transmettons pas ce paramètre, PHP ne pourra pas continuer à effectuer des comparaisons de tableaux, ce qui entraînera l'interruption du programme et une erreur.

Solution

La solution à ce problème est très simple, assurez-vous simplement que lorsque vous appelez array_diff_uassoc () , une fonction de comparaison personnalisée valide est toujours fournie. Par exemple, dans l'exemple précédent, nous utilisons la fonction compare_values ​​comme troisième paramètre:

 $result = array_diff_uassoc($array1, $array2, 'compare_values');

Assurez-vous de passer une fonction de rappel valide à chaque fois que Array_Diff_uassoc () est appelé, afin que vous ne rencontrerez aucune erreur.

Résumer

array_diff_uassoc () est une fonction PHP puissante qui nous permet de comparer les différences entre les paires de valeurs de clé de tableau basées sur des règles personnalisées. Cependant, si nous oublions de passer dans la fonction de comparaison personnalisée, nous rencontrerons une erreur. Par conséquent, assurez-vous de toujours fournir une fonction de rappel valide pour éviter cette erreur.