"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso usar `array_unique` para remover objetos duplicados em PHP?

Como posso usar `array_unique` para remover objetos duplicados em PHP?

Publicado em 13/11/2024
Navegar:233

How Can I Use `array_unique` to Remove Duplicate Objects in PHP?

Objetos únicos com array_unique

Em PHP, a função array_unique auxilia na eliminação de valores duplicados de um array. No entanto, ao trabalhar com matrizes contendo objetos, essa funcionalidade pode parecer não funcionar conforme o esperado.

Insira uma solução:

Para matrizes de objetos, você pode utilizar array_unique com o sinalizador de comparação SORT_REGULAR. Este sinalizador instrui a função a comparar objetos por suas propriedades em vez de suas referências de objeto.

Implementação:

Considere uma matriz de objetos Role:

class Role {
    public $name;
}

$foo = new Role();
$foo->name = 'test1';

$bar = $foo;

$bam = new Role();
$bam->name = 'test2';

$test = array($foo, $bar, $bam);

Para remover duplicatas usando array_unique:

print_r(array_unique($test, SORT_REGULAR));

Saída:

Array (
    [0] => Role Object
        (
            [name] => test1
        )

    [2] => Role Object
        (
            [name] => test2
        )
)

Cuidado:

É essencial observar que array_unique com SORT_REGULAR usa a comparação "==", não a comparação estrita ("==="). Isso significa que objetos com propriedades idênticas, mas com referências de objetos diferentes, ainda serão considerados duplicados.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3