En PHP, les tableaux sont une structure de données très puissante qui nous permet de stocker et de traiter de grandes quantités de données. Parfois, nous devons extraire les noms de clés du tableau, ou les comparer entre deux tableaux et nous assurer que le processus de comparaison prend en compte les clés et les valeurs du tableau. Aujourd'hui, nous expliquerons comment utiliser array_keys () et array_diff_uassoc () en combinaison pour y parvenir.
La fonction array_keys () peut extraire tous les noms de clés d'un tableau et les renvoyer sous forme de tableau indexé. Cette fonction est très utile, surtout lorsque vous devez fonctionner sur les clés d'un tableau. Voici la méthode d'utilisation de base de Array_Keys () :
<?php
$arr = [
'apple' => 1,
'banana' => 2,
'cherry' => 3
];
$keys = array_keys($arr);
print_r($keys);
?>
Sortir:
Array
(
[0] => apple
[1] => banana
[2] => cherry
)
Dans cet exemple, array_keys () renvoie un tableau contenant les noms de clés de tableau. Nous pouvons utiliser ces noms de clés pour effectuer d'autres opérations au besoin.
La fonction array_diff_uassoc () peut comparer les touches et les valeurs de deux tableaux et faire des comparaisons raffinées en fonction des fonctions de comparaison définies par l'utilisateur. Sa fonction est similaire à array_diff_assoc () , mais il vous permet de personnaliser les règles de comparaison. Cette fonction renvoie un tableau contenant des différences.
La syntaxe de base de array_diff_uassoc () est la suivante:
array_diff_uassoc(array $array1, array $array2, callable $value_comparator)
$ array1 et $ array2 sont les tableaux à comparer.
$ value_comparator est une fonction de comparaison personnalisée qui compare les valeurs dans un tableau.
Ensuite, jetons un coup d'œil à un exemple, combinant array_keys () et array_diff_uassoc () pour implémenter une opération de comparaison raffinée:
<?php
// Définir deux tableaux
$array1 = [
'apple' => 1,
'banana' => 2,
'cherry' => 3
];
$array2 = [
'apple' => 1,
'banana' => 3,
'cherry' => 3
];
// Fonctions de comparaison personnalisées:Comparez si les deux valeurs sont égales
function custom_compare($value1, $value2) {
return $value1 - $value2;
}
// utiliser array_diff_uassoc Effectuer une comparaison raffinée
$result = array_diff_uassoc($array1, $array2, 'custom_compare');
print_r($result);
?>
Sortir:
Array
(
[banana] => 2
)
Dans cet exemple, nous définissons deux tableaux $ array1 et $ array2 et utilisons la fonction personnalisée_compare pour comparer leurs valeurs. array_diff_uassoc () renvoie un tableau contenant des différences, c'est-à-dire que la valeur de la clé de banane est 2 , ce qui n'est pas égal à la valeur de clé de banane de 3 dans Array2 , donc la banane est répertoriée comme le résultat de la différence.
Dans une utilisation réelle, nous ne pouvons nous soucier que de certains noms de clés spécifiques et espérons obtenir ces noms de clés via array_keys () , puis utiliser array_diff_uassoc () pour les comparer de manière raffinée. Par exemple, nous voulons seulement comparer les deux clés d' Apple et Cherry :
<?php
// Définir deux tableaux
$array1 = [
'apple' => 1,
'banana' => 2,
'cherry' => 3
];
$array2 = [
'apple' => 1,
'banana' => 3,
'cherry' => 4
];
// Obtenez les noms clés à comparer
$keys_to_compare = array_keys($array1); // ['apple', 'banana', 'cherry']
// Fonctions de comparaison personnalisées:Comparez si les deux valeurs sont égales
function custom_compare($value1, $value2) {
return $value1 - $value2;
}
// Comparez et retournez à la différence
$result = array_diff_uassoc(
array_intersect_key($array1, array_flip($keys_to_compare)),
array_intersect_key($array2, array_flip($keys_to_compare)),
'custom_compare'
);
print_r($result);
?>
Sortir:
Array
(
[cherry] => 3
)
Dans cet exemple, nous extraissons d'abord tous les noms clés du tableau $ array1 via array_keys () . Ensuite, nous ne conservons que les clés qui doivent être comparées ( Apple et Cherry ) via array_intersect_key () . Enfin, une bonne comparaison a été réalisée à l'aide de Array_Diff_uassoc () et le résultat a montré que la valeur de la cerise est de 3 dans $ array1 et 4 dans $ array2 , renvoyant ainsi Cherry .
En combinant array_keys () et array_diff_uassoc () , nous pouvons comparer de manière plus flexible les valeurs de clés dans les tableaux. Array_keys () nous permet d'extraire facilement les noms de clés du tableau, tandis que Array_Diff_uassoc () nous permet de personnaliser les règles de comparaison pour garantir que les clés et les valeurs du tableau sont prises en compte pendant le processus de comparaison. La maîtrise de l'utilisation de ces deux fonctions peut considérablement améliorer notre capacité à traiter les tableaux en PHP.