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.
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