对象array_unique?
有没有像对象array_unique这样的方法?我有一堆带有“Role”对象的数组,然后我想取出重复项:)
有没有像对象array_unique这样的方法?我有一堆带有“Role”对象的数组,然后我想取出重复项:)
array_unique
使用SORT_REGULAR
处理对象数组:
class MyClass {
public $prop;
}
$foo = new MyClass();
$foo->prop = 'test1';
$bar = $foo;
$bam = new MyClass();
$bam->prop = 'test2';
$test = array($foo, $bar, $bam);
print_r(array_unique($test, SORT_REGULAR));
将打印:
Array (
[0] => MyClass Object
(
[prop] => test1
)
[2] => MyClass Object
(
[prop] => test2
)
)
在此处查看其实际效果:http://3v4l.org/VvonH#v529
警告:它将使用“==”比较,而不是严格比较(“===”)。
因此,如果要删除对象数组中的重复项,请注意它将比较每个对象属性,而不是比较对象标识(实例)。
好吧,array_unique()
比较了元素的字符串值:
注意:当且仅当字符串表示形式相同时,将使用第一个元素时,两个元素被视为相等。
(string) $elem1 === (string) $elem2
因此,请确保在类中实现__toString()
方法,并且它为相等的角色输出相同的值,例如
class Role {
private $name;
//.....
public function __toString() {
return $this->name;
}
}
如果两个角色具有相同的名称,则会认为它们相等。