Dans le développement quotidien de PHP, nous rencontrons souvent des situations où nous devons comparer les différences entre les tableaux. Pour les tableaux multidimensionnels, array_diff_ukey () est un outil très pratique si nous ne nous soucions que des différences dans les clés de niveau supérieur (touches de premier niveau) et ne comparez pas leurs valeurs.
Cet article expliquera comment utiliser array_diff_ukey () pour comparer les clés de niveau supérieur de deux tableaux multidimensionnels et découvrir les différentes parties.
array_diff_ukey () est utilisé pour comparer les noms de clés en fonction de la fonction de rappel fournis par l'utilisateur, afin de découvrir les pièces en deux tableaux ou plus où les noms de clés ne sont pas dupliqués.
grammaire:
array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array
$ Array1 : Le tableau à comparer.
$ array2 : le tableau utilisé pour comparer avec le premier tableau.
$ key_compare_func : une fonction de comparaison de clé définie par l'utilisateur.
Supposons que vous ayez deux tableaux multidimensionnels représentant deux ensembles de configuration différents. Vous souhaitez trouver les touches de niveau supérieur (touches de premier niveau) qui existent dans la configuration principale mais pas dans la configuration de comparaison.
$configMain = [
'database' => [
'host' => 'localhost',
'port' => 3306
],
'cache' => [
'enabled' => true
],
'api' => [
'endpoint' => 'https://m66.net/api'
]
];
$configCompare = [
'database' => [
'host' => '127.0.0.1',
'port' => 3306
],
'cache' => [
'enabled' => false
]
];
Nous voulons savoir quelles clés de niveau supérieur dans $ configmain n'apparaissent pas dans $ configCompare (comme la touche API dans l'exemple ci-dessus).
<?php
function compareKeys($a, $b) {
if ($a === $b) {
return 0;
}
return ($a > $b) ? 1 : -1;
}
$configMain = [
'database' => [
'host' => 'localhost',
'port' => 3306
],
'cache' => [
'enabled' => true
],
'api' => [
'endpoint' => 'https://m66.net/api'
]
];
$configCompare = [
'database' => [
'host' => '127.0.0.1',
'port' => 3306
],
'cache' => [
'enabled' => false
]
];
$diffKeys = array_diff_ukey($configMain, $configCompare, 'compareKeys');
print_r($diffKeys);
Array
(
[api] => Array
(
[endpoint] => https://m66.net/api
)
)
Comme vous pouvez le voir, array_diff_ukey () trouve avec succès l' API de clé de niveau supérieur qui existe dans $ configmain mais pas dans $ configCompare .
La fonction de rappel doit être une fonction qui compare deux touches . Les règles de valeur de retour sont les mêmes que strcmp () : moins de 0, égale à 0 et supérieure à 0.
Cette fonction ne compare pas les valeurs , seulement les clés.
Seule valide pour les clés de niveau supérieur, si vous souhaitez comparer les structures imbriquées, utilisez une logique récursive pour correspondre.
L'utilisation de Array_Diff_ukey () est un moyen efficace et concis de comparer les différences de nom de clé entre deux tableaux, en particulier pour les scénarios dans les tableaux multidimensionnels en ce qui concerne les différences structurelles primaires .
Qu'il s'agisse de gérer les différences de configuration, de comparaison de la structure ou d'effectuer une vérification d'autorisation, la maîtrise de l'utilisation de cette fonction peut vous permettre d'écrire un code PHP plus propre et plus clair.
Si vous souhaitez comparer davantage les différences entre les paires de valeurs clés, vous pouvez envisager d'utiliser array_diff_assoc () ou un traitement de fonction récursif personnalisé.