Dans PHP, array_diff_uassoc () est une fonction qui compare deux tableaux associatifs et renvoie la différence entre eux. Il se compare non seulement sur la base des valeurs clés du tableau, mais permet également aux fonctions de comparaison personnalisées de déterminer si les valeurs sont égales. Cette fonction est très adaptée à la gestion des tableaux multidimensionnels ou lorsque une logique de comparaison spéciale est requise.
La syntaxe de base de array_diff_uassoc () est la suivante:
array_diff_uassoc(array $array1, array $array2, callable $key_compare_func): array
$ Array1 : Le premier tableau associatif.
$ array2 : le deuxième tableau associatif.
$ key_compare_func : une fonction de rappel utilisée pour comparer les clés du tableau. Cette fonction prend deux paramètres et renvoie une valeur entière, indiquant leurs résultats de comparaison.
Supposons que nous ayons deux tableaux associatifs, nous voulons découvrir la différence entre eux, en particulier, nous voulons découvrir les éléments qui sont dans le premier tableau et non dans le deuxième tableau.
<?php
$array1 = array(
"a" => "apple",
"b" => "banana",
"c" => "cherry"
);
$array2 = array(
"a" => "apple",
"b" => "blueberry"
);
$result = array_diff_uassoc($array1, $array2, "key_compare");
print_r($result);
function key_compare($key1, $key2) {
return strcmp($key1, $key2);
}
?>
Nous définissons deux tableaux associatifs $ array1 et $ array2 .
En utilisant la fonction array_diff_uassoc () , nous passons en deux tableaux et une fonction de comparaison key_compare .
La fonction key_compare utilise strcmp () pour comparer l'ordre alphabétique des clés. Sa valeur de retour détermine l'ordre relatif des deux clés:
Si un nombre négatif est retourné, cela signifie que $ Key1 est inférieur à $ KEY2 .
Si zéro est retourné, cela signifie que $ key1 est égal à $ key2 .
Si un nombre positif est retourné, cela signifie que $ Key1 est supérieur à $ KEY2 .
La fonction array_diff_uassoc () renvoie des éléments dans $ array1 , qui ont des clés ou des valeurs correspondantes différentes dans $ array2 .
Array
(
[c] => cherry
)
Comme on peut le voir à partir de la sortie ci-dessus, array_diff_uassoc () renvoie "C" => "Cherry" dans $ array1 , car cet élément ne trouve pas la clé correspondante "C" dans $ array2 .
array_diff_uassoc () vous permet de personnaliser les fonctions de comparaison, pas seulement une chaîne simple ou des comparaisons numériques. Par exemple, vous pouvez comparer les paires de valeurs clés en fonction d'une logique spécifique. Par exemple, supposons que nous voulons comparer la longueur des valeurs du tableau au lieu des valeurs littérales:
<?php
$array1 = array(
"a" => "apple",
"b" => "banana",
"c" => "cherry"
);
$array2 = array(
"a" => "apple",
"b" => "banana",
"c" => "pear"
);
$result = array_diff_uassoc($array1, $array2, "length_compare");
print_r($result);
function length_compare($key1, $key2) {
return strlen($key1) - strlen($key2);
}
?>
Supposons que nous travaillions sur un tableau contenant des URL et devons utiliser array_diff_uassoc () pour découvrir les différences. Voici un exemple spécifique dans lequel nous remplaçons le nom de domaine par m66.net :