在一个PHP程序中,我有一些自定义对象的数组,我想查找数组是否包含某个对象。当然,我可以使用array_search,但是这会检查对象是否是同一个对象,而不是它是否具有相同的变量。所以我想能够创建我自己的比较函数的对象,我可以使用array_search方法(或类似的东西)。 我希望能够做这样的事情:php overload equals运算符
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
是这样的可能吗? 我知道我也可以创建自己的array_search方法,它使用类中的方法,但是我不得不使用2个不同的搜索函数,一个用于具有自己的比较函数的类,另一个用于那些避难所“T。
如果您将第三个$ strict参数设置为true,array_search仅检查对象是否是相同的实例。否则,如果两个对象“具有相同的属性和值,并且是同一类的实例”,则认为它们是相等的 - 请参阅[==](http://php.net/manual/en/language)的行为。 oop5.object-comparison.php)运算符。 – yscik 2011-02-09 16:32:14