Position actuelle: Accueil> Derniers articles> Array_diff_uassoc () préserve-t-il l'ordre clé du tableau d'origine?

Array_diff_uassoc () préserve-t-il l'ordre clé du tableau d'origine?

M66 2025-06-06

Dans PHP, array_diff_uassoc () est une fonction de tableau très utile qui calcule la différence entre deux tableaux, et permet également aux utilisateurs d'utiliser des fonctions de comparaison personnalisées pour comparer les clés des tableaux. De nombreux développeurs ont souvent une question lors de l'utilisation de cette fonction:

Pour répondre à cette question, nous devons d'abord comprendre l'utilisation de base de Array_Diff_uassoc () et son comportement.

Introduction à la fonction array_diff_uassoc ()

La fonction array_diff_uassoc () est utilisée pour calculer la différence entre deux tableaux, similaires à array_diff () , mais contrairement à celle-ci, array_diff_uassoc () compare les clés et les valeurs du tableau en même temps. Son prototype de fonction est le suivant:

 array array_diff_uassoc ( array $array1 , array $array2 , callable $key_compare_func )
  • $ Array1 : Il s'agit du premier tableau, qui sera comparé à d'autres tableaux.

  • $ Array2 : Il s'agit du tableau qui doit être comparé, généralement un ou plusieurs tableaux.

  • $ key_compare_func : Il s'agit d'une fonction de rappel personnalisée qui compare les clés de deux éléments de tableau. La fonction doit accepter deux clés comme arguments et renvoyer un résultat de comparaison.

Gardez l'ordre clé?

Pour en revenir au cœur de la question, l'ordre clé du tableau d'origine sera-t-il préservé lors de l'utilisation de Array_Diff_uassoc () ?

La réponse est: oui, array_diff_uassoc () préservera l'ordre clé du tableau d'origine . Lors de l'exécution d'une opération de différence de tableau, array_diff_uassoc () iratera sur le premier tableau ( $ array1 ) et des éléments de retour qui n'existent pas dans le deuxième tableau dans l'ordre des clés d'origine. Autrement dit, la commande clé dans $ array1 ne sera pas perturbée.

Exemple

Nous pouvons le démontrer avec l'exemple suivant:

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

$array2 = [
    0 => 'a',
    2 => 'c'
];

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

print_r($result);
?>

Sortir:

 Array
(
    [1] => b
    [3] => d
)

Comme indiqué ci-dessus, la fonction array_diff_uassoc () conserve avec succès l'ordre des clés 1 et 3 dans le tableau $ array1 et renvoie les éléments qui n'existent pas dans $ array2 . Cela montre que l'ordre clé du tableau d'origine n'a pas changé.

Pourquoi l'ordre clé est-il préservé?

En effet, l'implémentation de array_diff_uassoc () est basée sur la fonction array_diff () de PHP. Le tableau renvoyé par la fonction array_diff () est organisé dans l'ordre du premier tableau (c'est-à-dire $ array1 ), et array_diff_uassoc () ajoute la fonction de comparaison de clé sur cette base. Par conséquent, il préserve naturellement l'ordre clé du tableau d'origine.

Choses à noter

Bien que Array_Diff_uassoc () conserve l'ordre clé du tableau d'origine, nous devons toujours prêter attention aux points suivants:

  1. Si les éléments du deuxième tableau ( $ array2 ) contiennent les mêmes clés que dans le premier tableau, ces éléments sont supprimés du résultat de la différence, quelle que soit leur position dans le deuxième tableau.

  2. Si vous avez besoin de trier le tableau de résultat, PHP fournit plusieurs fonctions telles que KSORT () ou ASORT () pour trier les résultats en fonction de vos besoins.

en conclusion

Lorsque vous utilisez array_diff_uassoc () , l'ordre clé du tableau d'origine est conservé. Ceci est utile pour les situations où vous devez vous assurer que l'ordre clé n'est pas gâché, en particulier lorsque vous traitez avec des tableaux multidimensionnels ou des tableaux associatifs qui doivent maintenir une commande.