Aller au contenu

Fonction PHP array_diff_ukey() - Un guide complet

En PHP, la fonction array_diff_ukey() est un outil puissant qui vous aide à comparer des tableaux et à retourner la différence entre eux en fonction d'une fonction de comparaison de clés personnalisée. Dans cet article, nous examinerons de plus près le fonctionnement de cette fonction et comment vous pouvez l'utiliser dans vos projets PHP.

Signature de la fonction et paramètres

php
array_diff_ukey(array $array, array ...$arrays, callable $key_compare_func): array

Paramètres :

  • $array : Le tableau de base à comparer.
  • $arrays : Un ou plusieurs tableaux à comparer avec le tableau de base.
  • $key_compare_func : Une fonction callable qui compare deux clés et retourne un entier inférieur, égal ou supérieur à zéro.

Retourne : Un tableau contenant les entrées de $array dont les clés ne sont présentes dans aucun des autres tableaux.

Comment fonctionne la fonction PHP array_diff_ukey() ?

La fonction array_diff_ukey() prend deux tableaux ou plus en arguments et compare leurs entrées en fonction de la fonction de comparaison de clés que vous fournissez. Cette fonction de comparaison doit retourner un entier inférieur, égal ou supérieur à zéro, selon le résultat de la comparaison.

Si le résultat de la comparaison est inférieur à zéro, le premier argument est considéré comme inférieur au second. Si le résultat est supérieur à zéro, le premier argument est considéré comme supérieur au second. Si le résultat est égal à zéro, les deux arguments sont considérés comme égaux.

Utilisation de la fonction PHP array_diff_ukey()

Voici un exemple d'utilisation de la fonction array_diff_ukey() en PHP :

Exemple PHP d'utilisation de la fonction array_diff_ukey

php
<?php

function key_compare_func($a, $b)
{
    if ($a === $b) {
        return 0;
    }
    return ($a > $b)? 1:-1;
}

$array1 = ["a" => "green", "b" => "brown", "c" => "blue", "red"];
$array2 = ["a" => "green", "yellow", "red"];
$result = array_diff_ukey($array1, $array2, 'key_compare_func');
print_r($result);

?>

Dans cet exemple, la fonction array_diff_ukey() est utilisée pour comparer les entrées de $array1 et $array2 en fonction d'une fonction de comparaison de clés personnalisée nommée key_compare_func. Le tableau résultant, stocké dans $result, contient les entrées de $array1 qui ne sont pas présentes dans $array2.

Remarque : Dans la fonction de rappel, $a et $b représentent les clés des tableaux, et non les valeurs.


console
Array
(
    [b] => brown
    [c] => blue
)

Fonction de comparaison de clés personnalisée

La fonction de comparaison de clés personnalisée est une partie cruciale de la fonction array_diff_ukey(), car elle détermine comment les entrées des deux tableaux sont comparées. Voici un exemple de fonction de comparaison de clés personnalisée :

Exemple PHP de fonction de comparaison de clés de tableau personnalisée

php
function key_compare_func($a, $b)
{
    if ($a === $b) {
        return 0;
    }
    return ($a > $b)? 1:-1;
}

Dans cet exemple, la fonction key_compare_func() retourne 0 si les deux arguments sont égaux, 1 si le premier argument est supérieur au second, et -1 si le premier argument est inférieur au second.

Remarque sur la conversion de type (Type Juggling) : Lors de la comparaison de clés de types mixtes (par exemple, chaînes et entiers), la comparaison faible de PHP dans votre fonction de rappel peut entraîner des résultats inattendus. Assurez-vous que votre fonction de rappel gère explicitement la conversion de type ou utilise une comparaison stricte (===) si une correspondance de type précise est requise.

Conclusion

La fonction array_diff_ukey() est un outil utile en PHP pour comparer des tableaux et trouver la différence entre eux en fonction d'une fonction de comparaison de clés personnalisée. En comprenant son fonctionnement et son utilisation, vous pouvez rendre vos projets PHP plus efficaces et performants. Pour les scénarios où vous devez comparer à la fois les clés et les valeurs à l'aide de fonctions personnalisées, envisagez d'explorer des fonctions apparentées comme array_diff_uassoc().

Pratique

Quelle est la bonne utilisation de la fonction array_diff_ukey() en PHP ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.