En un programa PHP tengo una matriz de algunos objetos personalizados, y quiero encontrar si la matriz contiene un determinado objeto. Por supuesto, puedo usar array_search, pero esto comprueba si los objetos son el mismo objeto, no si tiene las mismas variables. Así que quiero poder crear mi propia función de comparación para los objetos, que puedo usar con el método array_search (o algo similar). Quiero ser capaz de hacer algo como esto:sobrecarga de php igual-operador
class foo
{
public $_a,$_b;
function __construct($a,$b)
{
$this->_a = $a;
$this->_b = $b;
}
function __equals($object)
{
return $this->_a == $object->_a;
}
}
$f1 = new foo(5,4);
$f2 = new foo(4,6);
$f3 = new foo(4,5);
$array = array($f1,$f2);
$idx = array_search($f3,$array); // return 0
es algo como esto posible? Sé que también puedo crear mi propio método array_search que utiliza un método de la clase, pero que tendría que usar 2 funciones de búsqueda diferentes, una para las clases que tienen su propia función de comparación, y otra para las que no tienen acceso 't.
array_search solo comprueba si los objetos son la misma instancia si establece su tercer parámetro $ strict en verdadero. De lo contrario, dos objetos se consideran iguales si "tienen los mismos atributos y valores, y son instancias de la misma clase": vea el comportamiento de [==] (http://php.net/manual/en/language. operador oop5.object-comparison.php). – yscik