Position actuelle: Accueil> Derniers articles> Raisons pour lesquelles la valeur de retour de la fonction de rappel doit être un entier

Raisons pour lesquelles la valeur de retour de la fonction de rappel doit être un entier

M66 2025-06-06

Array_Diff_uassoc est une fonction de comparaison du tableau dans PHP. Il est généralement utilisé pour comparer les clés et les valeurs de deux tableaux. Il utilise des fonctions de rappel définies par l'utilisateur pour comparer les clés des éléments du tableau. Contrairement à la fonction Array_Diff_assoc , Array_Diff_uassoc permet aux utilisateurs de personnaliser les règles de comparaison. Cet article explorera pourquoi la valeur de retour de la fonction de rappel doit être un entier lors de l'utilisation de Array_Diff_uassoc et examinera le principe de travail et les scénarios d'utilisation de la fonction.

Introduction à la fonction array_diff_uassoc

La fonction Array_Diff_uassoc est utilisée pour comparer les paires de valeurs clés de deux tableaux et renvoyer ces paires de valeurs clés qui sont dans le premier tableau mais pas dans les autres tableaux. Cette fonction est similaire à Array_Diff_assoc , mais Array_Diff_uassoc fournit une fonction supplémentaire qui permet à l'utilisateur de spécifier une fonction de rappel pour déterminer comment les clés sont comparées.

Prototype de fonction:

 array_diff_uassoc(array $array1, array $array2, callable $key_compare_func): array
  • $ Array1 : Le premier tableau à comparer.

  • $ array2 : le deuxième tableau à comparer.

  • $ key_compare_func : une fonction de rappel définie par l'utilisateur qui compare les clés de deux tableaux.

Exigences pour la valeur de retour de la fonction de rappel

Lorsque vous utilisez Array_Diff_uassoc , la valeur renvoyée par la fonction de rappel doit être un entier. En effet, array_diff_uassoc utilise une fonction de rappel pour comparer les clés de deux tableaux, et lors de la comparaison des clés, il appelle la fonction de rappel pour déterminer l'ordre de chaque clé. La valeur de retour de la fonction de rappel déterminera la relation de la clé, et PHP nécessite un résultat de comparaison clair pour effectuer les calculs de tri et de différence.

Définition de la valeur de retour de la fonction de rappel:

  • La valeur de retour est un entier négatif , indiquant que la première clé est plus petite que la deuxième clé.

  • La valeur de retour est zéro , indiquant que les deux clés sont égales.

  • La valeur de retour est un entier positif , indiquant que la première clé est supérieure à la deuxième clé.

Cette valeur de retour est similaire aux fonctions StrCMP ou StrCasecMP couramment utilisées en PHP, et ils renvoient également les valeurs entières pour représenter les résultats de comparaison de deux chaînes.

Pourquoi un entier doit-il être retourné?

  1. Règles de comparaison effacer: la fonction Array_Diff_uassoc de PHP nécessite la valeur de retour de la fonction de rappel comme norme pour comparer deux clés. La valeur de retour entière peut représenter avec précision une relation "petite", "égale" ou "grande". Le retour d'un entier permet à PHP de trier et de comparer les clés, calculant ainsi correctement les différences entre deux tableaux.

  2. Conformément au mécanisme de tri à l'intérieur de PHP: PHP, les fonctions de tri internes (telles que Usort et Uksort ) nécessitent que la fonction de rappel renvoie des valeurs entières, représentant la relation de tri entre deux éléments. Par conséquent, la fonction Array_Diff_uassoc adopte également la même convention pour garantir la cohérence et la compatibilité avec d'autres fonctions liées à SORT.

  3. Logique simplifiée: PHP ne peut pas gérer correctement la logique de tri des touches si la fonction de rappel renvoie d'autres types de données (comme une valeur booléenne ou une chaîne). Les valeurs de retour entier simplifient ce processus, permettant au mécanisme de comparaison interne de PHP de gérer efficacement les différences de tableau.

Exemple de code

Voici un exemple simple d'utilisation de Array_Diff_uassoc :

 <?php
// Définir la fonction de rappel,Utilisé pour comparer la taille de deux clés
function compare_keys($key1, $key2) {
    return strcmp($key1, $key2);  // utiliser strcmp Résultat de retour entier
}

// Définir deux tableaux
$array1 = ["a" => 1, "b" => 2, "c" => 3];
$array2 = ["b" => 2, "d" => 4];

// utiliser array_diff_uassoc Fonctions Comparez deux tableaux
$result = array_diff_uassoc($array1, $array2, 'compare_keys');

// Résultat de sortie
print_r($result);
?>

Sortir:

 Array
(
    [a] => 1
    [c] => 3
)

Dans l'exemple ci-dessus, nous avons utilisé la fonction STRCMP comme fonction de rappel pour comparer les touches du tableau. Étant donné que STRCMP renvoie une valeur entière, la comparaison des clés peut être effectuée en douceur et Array_Diff_uassoc peut calculer correctement la différence de tableau.

Résumer

Lorsque vous utilisez Array_Diff_uassoc , la valeur de retour de la fonction de rappel doit être un entier, car PHP en interne doit déterminer la relation de taille entre les clés en fonction de l'entier, afin de calculer correctement les différences dans le tableau. Le retour entiers peut fournir des résultats de comparaison clairs, garantissant que la fonction fonctionne correctement et est cohérente avec d'autres fonctions de tri et de comparaison en PHP.