Dans PHP, array_diff_key () et array_diff_assoc () sont tous deux des fonctions utilisées pour comparer les tableaux, mais leurs méthodes de comparaison sont évidemment différentes de ces scénarios applicables. Cet article expliquera les différences entre ces deux fonctions en détail et discutera de leurs scénarios d'utilisation respectifs.
array_diff_key () est utilisé pour comparer les noms de clés (touches) de deux tableaux ou plus et renvoie les paires de valeurs clés qui existent dans le premier tableau mais pas dans d'autres tableaux.
array_diff_key(array $array1, array $array2, array ...$arrays): array
$ array1 : le premier tableau (tableau de référence).
$ array2, ... $ Arrays : le tableau à comparer avec le premier tableau.
$array1 = [
"a" => 1,
"b" => 2,
"c" => 3
];
$array2 = [
"a" => 4,
"c" => 5
];
$result = array_diff_key($array1, $array2);
print_r($result);
Array
(
[b] => 2
)
Dans cet exemple, array_diff_key () compare les noms de clés de deux tableaux. Les résultats renvoyés sont ces paires de valeurs clés qui sont dans $ array1 mais pas dans $ array2 .
array_diff_assoc () est utilisé pour comparer les noms et valeurs de clé (clé et valeur) de deux tableaux ou plus, renvoyant des paires de valeurs clés qui existent dans le premier tableau mais pas dans d'autres tableaux. Contrairement à array_diff_key () , il compare non seulement les noms de clés, mais compare également les valeurs correspondant aux clés.
array_diff_assoc(array $array1, array $array2, array ...$arrays): array
$ array1 : le premier tableau (tableau de référence).
$ array2, ... $ Arrays : le tableau à comparer avec le premier tableau.
$array1 = [
"a" => 1,
"b" => 2,
"c" => 3
];
$array2 = [
"a" => 4,
"c" => 3
];
$result = array_diff_assoc($array1, $array2);
print_r($result);
Array
(
[a] => 1
[b] => 2
)
Dans cet exemple, array_diff_assoc () compare les noms et valeurs de clés de $ array1 et $ array2 . Les résultats renvoyés sont les paires de valeurs clés qui ont dans $ array1 mais n'ont pas exactement le même nom de clé et valeur dans $ array2 .
array_diff_key () compare uniquement les noms de clés et ignore les valeurs correspondantes de la clé.
array_diff_assoc () compare les noms et valeurs de clés en même temps. Ce n'est que lorsque les noms et valeurs de clés seront différents qu'il sera considéré comme différent.
array_diff_key () convient aux scénarios où vous vous souciez uniquement des noms de clés du tableau, mais pas des valeurs correspondantes. Par exemple, vous souhaitez supprimer certaines clés ou comparer la structure de deux tableaux.
array_diff_assoc () convient aux scénarios courants lorsque vous devez comparer complètement les clés et les valeurs dans un tableau, telles que le filtrage des éléments avec des noms et des valeurs de clés différents dans deux tableaux.
Supposons que nous ayons un tableau qui contient différentes URL et que nous devons être remplacés. Nous pouvons utiliser array_diff_key () ou array_diff_assoc () pour implémenter le remplacement, selon que nous devons comparer en fonction de la clé ou de la valeur clé.
$urls = [
"home" => "http://m66.net/home",
"about" => "http://example.com/about",
"contact" => "http://m66.net/contact"
];
$other_urls = [
"home" => "http://m66.net/home",
"about" => "http://m66.net/about",
];
$result = array_diff_key($urls, $other_urls);
print_r($result);
Array
(
[contact] => http://m66.net/contact
)
Dans cet exemple, nous comparons uniquement en fonction du nom de clé et trouvons enfin les éléments qui sont dans les URL $ mais pas dans $ autres_urls .
Ce qui précède est la différence entre array_diff_key () et array_diff_assoc () . Selon vos besoins, le choix de la bonne fonction pour gérer les différences de tableau peut efficacement améliorer l'efficacité et la lisibilité du code.