Position actuelle: Accueil> Derniers articles> La bonne façon d'utiliser array_diff_ukey () avec des fonctions de rappel personnalisées

La bonne façon d'utiliser array_diff_ukey () avec des fonctions de rappel personnalisées

M66 2025-05-15

Dans PHP, la fonction array_diff_ukey () est utilisée pour comparer les clés de deux tableaux ou plus et des éléments de retour qui sont différents de ceux des autres tableaux. Cette fonction est très utile, surtout si nous devons comparer les clés d'un tableau via des règles personnalisées. La fonction array_diff_ukey () nous permet de spécifier une fonction de rappel pour personnaliser les règles de comparaison des clés. Cet article présentera comment utiliser correctement la fonction Array_Diff_ukey () et affichera comment utiliser une fonction de rappel personnalisée pour comparer les touches.

Introduction à la fonction array_diff_ukey ()

Prototype de fonction

 array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array
  • Array1 : Le premier tableau, utilisé pour la comparaison.

  • Array2 : Le deuxième tableau, d'autres tableaux peuvent également être transmis en tant qu'objets de comparaison.

  • key_compare_func : une fonction de rappel pour personnaliser les règles de comparaison des clés. Cette fonction prend deux paramètres, représente les touches en deux tableaux et renvoie une valeur entière:

    • Si la première touche est plus petite que la deuxième touche, une valeur négative est renvoyée.

    • Si la première clé est supérieure à la deuxième clé, une valeur positive est renvoyée.

    • Si les deux clés sont égales, retournez zéro.

Exemple: utilisation de base

Tout d'abord, regardons un exemple simple pour comprendre l'utilisation de base de la fonction array_diff_ukey () .

 <?php
$array1 = [
    1 => 'apple',
    2 => 'banana',
    3 => 'cherry',
];

$array2 = [
    3 => 'cherry',
    4 => 'date',
];

$result = array_diff_ukey($array1, $array2, function($key1, $key2) {
    return $key1 - $key2;
});

print_r($result);
?>

Résultat de sortie:

 Array
(
    [1] => apple
    [2] => banana
)

Dans cet exemple, nous comparons les clés dans Array1 et Array2 et Filtrons en fonction des règles de la fonction de rappel. Étant donné que Key1 et Key2 sont des clés numériques et que nous choisissons d'utiliser la règle de comparaison numérique par défaut, nous renvoyons enfin les éléments correspondant aux touches non dans Array2 .

Utilisez des fonctions de rappel personnalisées

La puissance de la fonction array_diff_ukey () est que vous pouvez modifier la façon dont les clés sont comparées en personnalisant la fonction de rappel. Les fonctions de rappel peuvent être comparées sur la base de différentes conditions, telles que l'ordre alphabétique, par taille numérique ou selon d'autres règles métier.

Exemple: Comparez les clés par ordre alphabétique

Supposons que nous ayons deux tableaux et que nous voulions comparer les clés en fonction de l'ordre alphabétique:

 <?php
$array1 = [
    'apple' => 'fruit1',
    'banana' => 'fruit2',
    'cherry' => 'fruit3',
];

$array2 = [
    'cherry' => 'fruit3',
    'date' => 'fruit4',
];

$result = array_diff_ukey($array1, $array2, function($key1, $key2) {
    return strcmp($key1, $key2);
});

print_r($result);
?>

Résultat de sortie:

 Array
(
    [apple] => fruit1
    [banana] => fruit2
)

Dans cet exemple, nous utilisons la fonction strcmp () pour comparer les clés du tableau ( «pomme» , «banane» , etc.). La fonction strcmp () compare les chaînes de manière alphabétique et la valeur de retour détermine l'ordre et l'égalité des deux clés.

Exemple: comparaison des longueurs des clés

Nous pouvons également comparer la taille de la clé en fonction de la longueur de la clé:

 <?php
$array1 = [
    'a' => 'apple',
    'banana' => 'fruit',
    'cherry' => 'berry',
];

$array2 = [
    'cherry' => 'fruit',
    'date' => 'sweet',
];

$result = array_diff_ukey($array1, $array2, function($key1, $key2) {
    return strlen($key1) - strlen($key2);
});

print_r($result);
?>

Résultat de sortie:

 Array
(
    [banana] => fruit
)

Dans cet exemple, nous utilisons la fonction strlen () pour comparer la longueur de la clé. De cette façon, certaines règles de comparaison personnalisées plus complexes peuvent être mises en œuvre.

en conclusion

Grâce à la fonction array_diff_ukey () , vous pouvez comparer de manière flexible les clés d'un tableau et utiliser la fonction de rappel pour définir vos propres règles de comparaison. Cela rend les opérations de tableau plus flexibles et puissantes, et peut gérer divers scénarios complexes.