Estoy buscando una manera de que me mostrara las diferentes propiedades/valores de objetos dados ...comparar las propiedades de objetos y Mostrar diff en PHP
$obj1 = new StdClass; $obj1->prop = 1;
$obj2 = new StdClass; $obj2->prop = 2;
var_dump(array_diff((array)$obj1, (array)$obj2));
//output array(1) { ["prop"]=> int(1) }
Esto funciona muy bien, siempre que la propiedad no es una objeto o matriz.
$obj1 = new StdClass; $obj1->prop = array(1,2);
$obj2 = new StdClass; $obj2->prop = array(1,3);
var_dump(array_diff((array)$obj1, (array)$obj2))
// Output array(0) { }
// Expected output - array { ["prop"]=> array { [1]=> int(2) } }
¿Hay alguna manera de deshacerse de esto, incluso cuando la propiedad es otro objeto?
Por lo general se trata este con un método en la clase, como un objeto iguales ($) método ''. Tal vez no puedes modificar la clase? –
Ah, y al comparar propiedades que contienen objetos, ¿cómo considera que los objetos son iguales? Esta es una especie de pregunta recursiva ... Puede verificar si sus propiedades son iguales (problema recursivo ...) o si son la misma instancia (más fuerte que la igualdad). –
es el código por encima del exacto que está probando? si es así, entonces prop de $ obj1 y $ obj2 son la misma matriz (1,2). Técnicamente, realmente no hay diferencia. – dragonjet