Trong chương trình PHP, tôi có một mảng của một số đối tượng tùy chỉnh và tôi muốn tìm xem mảng có chứa một đối tượng nhất định hay không. Tất nhiên tôi có thể sử dụng array_search, nhưng điều này sẽ kiểm tra nếu các đối tượng là cùng một đối tượng, không nếu nó có các biến tương tự. Vì vậy, tôi muốn để có thể tạo ra chức năng so sánh của riêng tôi cho các đối tượng, mà tôi có thể sử dụng với phương pháp array_search (hoặc một cái gì đó tương tự). Tôi muốn có thể thực hiện một việc như sau:Quá tải php bằng toán tử
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
Có điều gì đó như thế này có thể? Tôi biết tôi cũng có thể tạo phương thức array_search của riêng mình sử dụng phương thức từ lớp, nhưng tôi phải sử dụng 2 hàm tìm kiếm khác nhau, một cho các lớp có chức năng so sánh riêng và một cho 't.
array_search chỉ kiểm tra xem các đối tượng có cùng một phiên bản nếu bạn đặt thông số $ strict thứ ba thành true. Nếu không, hai đối tượng được coi là bằng nhau nếu chúng "có cùng thuộc tính và giá trị, và là các thể hiện của cùng một lớp" - xem hành vi của [==] (http://php.net/manual/en/language. oop5.object-compar.php) toán tử. – yscik