Dans PHP, la fonction Array_Diff_ukey est un outil très pratique qui peut comparer les clés de deux tableaux associatifs et trouver les différences basées sur des fonctions de comparaison de clés personnalisées. Grâce à cette fonction, nous pouvons découvrir quelles clés existent dans le premier tableau mais n'existent pas dans le deuxième tableau, ou leurs valeurs de clé sont différentes. Ensuite, nous allons approfondir comment utiliser cette fonction pour comparer les différences entre les deux structures de tableau associatives.
array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array
Description du paramètre :
$ array1 : le premier tableau, comme référence à comparer.
$ array2 : le deuxième tableau, par rapport au premier tableau.
$ key_compare_func : une fonction de rappel définie par l'utilisateur pour comparer les clés de deux tableaux. La fonction doit retourner:
Moins de 0 signifie que la première touche est inférieure à la deuxième clé.
Égal à 0 signifie que les deux liaisons sont égales.
supérieur à 0 signifie que la première clé est supérieure à la deuxième clé.
Valeur de retour :
Renvoie un tableau contenant des paires de valeurs clés qui sont dans $ array1 mais pas dans $ array2 .
Jetons un coup d'œil à un exemple simple de la façon d'utiliser array_diff_ukey pour comparer les différences entre deux tableaux associatifs.
<?php
$array1 = [
"apple" => "red",
"banana" => "yellow",
"cherry" => "red",
"grape" => "purple"
];
$array2 = [
"banana" => "yellow",
"cherry" => "red",
"melon" => "green"
];
// Fonction de comparaison de clés personnalisée
$key_compare_func = function($key1, $key2) {
return strcmp($key1, $key2); // Comparaison de deux clés en utilisant la chaîne
};
// Comparaison des principales différences entre deux tableaux
$result = array_diff_ukey($array1, $array2, $key_compare_func);
print_r($result);
?>
Résultat de sortie :
Array
(
[apple] => red
[grape] => purple
)
Dans cet exemple, Array_Diff_ukey compare les touches dans $ array1 et $ array2 , en sortant des paires de valeurs clés qui existent dans $ array1 mais pas dans $ array2 . Comme vous pouvez le voir, "Apple" et "Grape" n'existent pas dans $ array2 , ils sont donc inclus dans le résultat.
Une fonctionnalité puissante de la fonction Array_Diff_ukey est qu'elle vous permet de contrôler comment comparer les touches via des fonctions de comparaison de clés personnalisées. Dans l'exemple ci-dessus, nous avons utilisé StrCMP () pour la comparaison des chaînes, mais vous pouvez utiliser d'autres moyens pour comparer en fonction des besoins réels, tels que par taille numérique, format de date, etc.
Voici un autre exemple en utilisant la clé de comparaison de la taille du nombre:
<?php
$array1 = [
1 => "one",
2 => "two",
3 => "three",
5 => "five"
];
$array2 = [
2 => "two",
3 => "three",
4 => "four"
];
// Fonction de comparaison de clés personnalisée
$key_compare_func = function($key1, $key2) {
return $key1 - $key2; // Comparez par la taille du nombre
};
// Comparaison des principales différences entre deux tableaux
$result = array_diff_ukey($array1, $array2, $key_compare_func);
print_r($result);
?>
Résultat de sortie :
Array
(
[1] => one
[5] => five
)
Dans cet exemple, Array_Diff_ukey utilise une fonction de comparaison numérique pour comparer les clés, et le résultat montre une clé qui est dans $ array1 mais pas dans $ array2 .
La fonction Array_Diff_ukey est très adaptée aux scénarios où les différences doivent être comparées en fonction des clés du tableau. Par exemple:
Trouvez des clés qui n'apparaissent pas dans un autre tableau : lorsque vous devez comparer deux tableaux en fonction des clés, vous pouvez utiliser cette fonction pour trouver des éléments de tableau qui ne partagent pas la même clé.
Comparez les clés par des règles personnalisées : si la clé est une chaîne ou un nombre, vous pouvez utiliser des règles de comparaison personnalisées pour contrôler la façon de juger les différences de manière plus flexible.
En supposant que vous devez comparer les touches de tableau lors du traitement des données contenant des URL et que vous souhaitez remplacer le nom de domaine dans l'URL par m66.net , vous pouvez le faire:
<?php
$array1 = [
"https://www.example1.com" => "site1",
"https://www.example2.com" => "site2"
];
$array2 = [
"https://www.example2.com" => "site2",
"https://www.example3.com" => "site3"
];
// Fonction de comparaison de clés personnalisée,remplacer URL nom de domaine
$key_compare_func = function($key1, $key2) {
$key1 = preg_replace('/^https?:\/\/([^\/]+)(.*)$/', 'https://m66.net$2', $key1);
$key2 = preg_replace('/^https?:\/\/([^\/]+)(.*)$/', 'https://m66.net$2', $key2);
return strcmp($key1, $key2); // Comparaison de la modification URL
};
// Comparaison des principales différences entre deux tableaux
$result = array_diff_ukey($array1, $array2, $key_compare_func);
print_r($result);
?>
Dans cet exemple, nous remplaçons le nom de domaine de l'URL par m66.net par la fonction preg_replace , puis comparons. Cette approche est idéale pour les scénarios où il existe différents noms de domaine ou comparaisons d'URL avec différents chemins mais essentiellement les mêmes.
Ce qui précède est une introduction de base et quelques exemples pratiques de la façon d'utiliser la fonction Array_Diff_ukey de PHP pour comparer les différences entre deux structures de tableau associatives. Grâce à des fonctions de comparaison de clés personnalisées, vous pouvez contrôler le processus de comparaison de manière très flexible et implémenter diverses fonctions en fonction des besoins réels.