在一個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