Maison  >  Article  >  développement back-end  >  Pouvez-vous utiliser « array_unique » avec des objets pour supprimer les doublons ?

Pouvez-vous utiliser « array_unique » avec des objets pour supprimer les doublons ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-01 14:29:02783parcourir

Can You Use `array_unique` with Objects to Remove Duplicates?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn