Utiliser array_unique avec des objets
Les tableaux sont une structure de données fondamentale en programmation, et des opérations doivent souvent être effectuées sur eux. Une opération courante consiste à supprimer les éléments en double. Pour les tableaux de types de données primitifs, la fonction array_unique peut être utilisée. Cependant, lorsqu'il s'agit d'objets, les choses deviennent un peu plus complexes.
Problème
Imaginez que vous ayez plusieurs tableaux contenant des objets Role qui doivent être fusionnés puis dédupliqués. Existe-t-il un moyen d'y parvenir en utilisant une méthode similaire à array_unique spécifiquement conçue pour les objets ?
Solution
Oui, il est possible d'utiliser array_unique avec des objets en en spécifiant l'indicateur SORT_REGULAR. Cela comparera les objets en fonction de leurs propriétés, plutôt que de leur identité.
<code class="php">class MyClass { public $prop; } $foo = new MyClass(); $foo->prop = 'test1'; $bar = $foo; $bam = new MyClass(); $bam->prop = 'test2'; $test = array($foo, $bar, $bam); print_r(array_unique($test, SORT_REGULAR));</code>
Sortie :
Array ( [0] => MyClass Object ( [prop] => test1 ) [2] => MyClass Object ( [prop] => test2 ) )
Remarque importante :
Lorsque vous utilisez array_unique avec des objets, il est important de noter qu'il utilise la comparaison "==", et non la comparaison stricte ("==="). Cela signifie que deux objets ayant des propriétés identiques mais des identités d'objet différentes ne seront pas considérés comme des doublons. Par conséquent, si une comparaison stricte est requise, une approche alternative peut être nécessaire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!