PHPプログラムでは、いくつかのカスタムオブジェクトの配列があり、配列に特定のオブジェクトが含まれているかどうかを調べたいと思います。もちろん、私はarray_searchを使うことができますが、オブジェクトが同じオブジェクトであるかどうかをチェックします。同じ変数を持つ場合はそうではありません。だから、私はarray_searchメソッド(または類似のもの)で使うことができる、オブジェクトのために私自身の比較関数を作成できるようにしたい。php overload equals-operator
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つの異なる検索関数を使用するよりも、独自のcompare関数を持つクラス用と、 't。
array_searchは、3番目の$ strictパラメータをtrueに設定すると、オブジェクトが同じインスタンスであるかどうかのみをチェックします。それ以外の場合、2つのオブジェクトは「同じ属性と値を持ち、同じクラスのインスタンスです」と等しいとみなされます。[==](http://php.net/manual/en/language。 oop5.object-comparison.php)演算子。 – yscik