比较2个PHP对象

时间:2013-12-11 23:16:23

标签: php

我需要比较2个对象以删除重复项/找到新的企业。

对象不相同,但它们包含相同的用户名密钥

这是布局

数据库对象

array
  [0]db->username
  [0]db->something
  [1]db->username
  [1]db->something
  etc

其他对象

array
  [0]ob->username
  [0]ob->somethingElse
  [1]ob->username
  [1]ob->somethingElse
  etc

我想我可以循环一个对象数组,并将$ db [$ key] - >用户名与另一个对象$ ob [$ key] - >用户名的内部循环进行比较但是有一种更清洁的方式?

我希望删除重复项

1 个答案:

答案 0 :(得分:2)

不,没有更清洁的方法,你必须遍历属性。如果那不是StdClass对象,我会在他们的类中添加一个自定义比较方法:

class Person {

   protected $id;
   protected $name;
   protected $age;

   /**
    * Compares two persons an returns true if their name
    * and age equals.
    */
   public function equals(Person $b) {
       if($b->name === $this->name && $b->age === $this->age) {
           return TRUE;
       }
       return FALSE;
   }
}

然后像这样使用它:

$personA = DB::getPersonById(1);
$personB = DB::getPersonById(2);

if($personA->equals($personB)) {
    echo "They are equal";
}

然而,除此之外,为什么不只是使用SQL删除重复项,甚至更好地使用DB中的唯一键来避免重复?