我需要比较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] - >用户名的内部循环进行比较但是有一种更清洁的方式?
我希望删除重复项
答案 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中的唯一键来避免重复?