"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo usar `array_unique` para eliminar objetos duplicados en PHP?

¿Cómo puedo usar `array_unique` para eliminar objetos duplicados en PHP?

Publicado el 2024-11-13
Navegar:504

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

Objetos únicos con array_unique

En PHP, la función array_unique ayuda a eliminar valores duplicados de una matriz. Sin embargo, cuando se trabaja con matrices que contienen objetos, es posible que esta funcionalidad no funcione como se esperaba.

Ingrese una solución:

Para matrices de objetos, puede utilizar array_unique con el indicador de comparación SORT_REGULAR. Este indicador indica a la función que compare objetos por sus propiedades en lugar de por sus referencias de objetos.

Implementación:

Considere una serie de objetos de rol:

class Role {
    public $name;
}

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

$bar = $foo;

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

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

Para eliminar duplicados usando array_unique:

print_r(array_unique($test, SORT_REGULAR));

Salida:

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

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

Precaución:

Es esencial tener en cuenta que array_unique con SORT_REGULAR usa la comparación "==", no la comparación estricta ("==="). Esto significa que los objetos con propiedades idénticas pero con referencias de objeto diferentes aún se considerarán duplicados.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3