Dans PHP, array_diff_key () est une fonction de tableau couramment utilisée qui calcule les différences de clés entre deux tableaux ou plus, les clés de retour qui existent dans le premier tableau mais n'existent pas dans d'autres tableaux. Cependant, de nombreux développeurs peuvent être curieux de savoir si un objet peut être transmis à la fonction en tant que paramètre. Aujourd'hui, discutons en détail ce problème.
La fonction array_diff_key () prend deux tableaux ou plus sous forme de paramètres et renvoie un nouveau tableau contenant des touches qui existent dans le premier tableau mais n'existent pas dans d'autres tableaux. La syntaxe de base est la suivante:
array_diff_key(array $array1, array ...$arrays): array
Par exemple:
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['a' => 4, 'd' => 5];
$result = array_diff_key($array1, $array2);
print_r($result);
Sortir:
Array
(
[b] => 2
[c] => 3
)
Dans cet exemple, le tableau de résultat $ contient les clés «B» et «C» dans $ array1 , car ces clés n'existent pas dans $ array2 .
La signature de la fonction de Array_Diff_Key () nécessite explicitement que le paramètre soit de type de tableau ( tableau ). Par conséquent, passer l'objet directement en tant que paramètre entraînera une erreur. Par exemple:
$obj1 = (object)['a' => 1, 'b' => 2];
$obj2 = (object)['a' => 4, 'd' => 5];
$result = array_diff_key($obj1, $obj2); // erreur!
Ce code lance une erreur car $ obj1 et $ obj2 sont des objets, pas des tableaux.
Bien que nous ne puissions pas passer l'objet directement dans array_diff_key () , nous pouvons résoudre ce problème en convertissant l'objet en un tableau. PHP fournit une variété de méthodes pour mettre en œuvre la conversion d'objet à réalité, telles que la coulée:
$obj1 = (object)['a' => 1, 'b' => 2];
$obj2 = (object)['a' => 4, 'd' => 5];
// Se convertir en un tableau
$array1 = (array)$obj1;
$array2 = (array)$obj2;
$result = array_diff_key($array1, $array2);
print_r($result);
Sortir:
Array
(
[b] => 2
)
Propriétés de l'objet : Lorsque vous convertissez un objet en un tableau, les propriétés publiques de l'objet deviennent des clés du tableau. S'il existe des propriétés privées ou protégées dans l'objet, elles deviennent inaccessibles. Par conséquent, array_diff_key () ne s'applique qu'aux attributs publics.
Méthodes d'objet : array_diff_key () ne se soucie que des clés du tableau, de sorte que les méthodes de l'objet (le cas échéant) ne seront pas prises en compte.
Complexité des objets : pour les objets complexes (tels que ceux contenant des objets ou des tableaux imbriqués), vous devrez peut-être les convertir de manière récursive en tableaux d'abord.
array_diff_key () ne peut pas accepter directement les objets comme paramètres car la fonction nécessite un tableau à transmettre.
Si vous souhaitez utiliser des objets comme paramètres, vous pouvez convertir les objets en un tableau, puis utiliser array_diff_key () pour le faire.
Lors de la conversion, faites attention à savoir si les propriétés de l'objet répondent à vos besoins, en particulier lorsque des propriétés privées ou protégées sont impliquées.
De cette façon, vous pouvez utiliser array_diff_key () avec la flexibilité pour gérer les différences entre les objets et les tableaux. J'espère que cet article vous aide!