Maison >développement back-end >tutoriel php >Comment supprimer les objets en double d'un tableau en PHP ?

Comment supprimer les objets en double d'un tableau en PHP ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-04 08:49:02460parcourir

How to Remove Duplicate Objects from an Array in PHP?

Comment supprimer des objets en double d'un tableau en PHP

La fonction array_unique() peut identifier et éliminer les éléments en double d'un tableau. Toutefois, cette fonctionnalité peut ne pas être immédiatement apparente pour les tableaux contenant des objets. Pour supprimer efficacement les objets en double, certaines modifications sont nécessaires.

Solution utilisant SORT_REGULAR

Pour permettre à array_unique() de fonctionner correctement avec les objets, spécifiez l'indicateur SORT_REGULAR comme deuxième paramètre :

<code class="php"><?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
        )
)

Explication

En utilisant SORT_REGULAR, la fonction array_unique() compare essentiellement la propriété prop de chaque objet, traitant les objets avec des valeurs de propriété identiques comme des doublons.

Attention

Bien que cette méthode supprime efficacement les objets en double, il est important de noter qu'elle repose sur == comparaison plutôt que la comparaison === plus stricte. Cela signifie que les objets ayant des identités différentes mais des propriétés identiques seront toujours considérés comme des doublons.

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