如何删除PHP中的对象数组中的重复项?
问题描述:
我有一个对象是这样的:如何删除PHP中的对象数组中的重复项?
class FanStruct{
public $date;
public $userid;
function __construct($date, $id){
$this->date = $date;
$this->userid = $id;
}
}
我有最大的其中30在阵列中,并且它们通过$userid
排序。
什么是通过阵列去除重复对象的最佳方式,并根据$userid
(忽略$date
)删除重复对象?
答
这是一个简单的测试,至少应该让你开始。您的__toString方法可能需要更加精细,以为您的FanStruct实例生成唯一性
<?php
class FanStruct{
public $date;
public $userid;
function __construct($date, $id){
$this->date = $date;
$this->userid = $id;
}
public function __toString()
{
return $this->date . $this->userid;
}
}
$test = array(
new FanStruct('today', 1)
,new FanStruct('today', 1)
,new FanStruct('tomorrow', 1)
);
print_r(array_unique($test));
?>
</pre>
+0
+1,我喜欢。从来没有想过这样尝试。 – cgp 2009-06-26 19:15:12
答
$temp = array($fans[$x]);
for(var $x=1;$x<sizeof($fans);$x++) {
if ($fans[$x]->userid != $fans[$x]->userid)
$temp[] = $fans[$x];
}
需要一个临时变量,但工作。
+0
+1,这也应该工作。 – Malfist 2009-06-26 19:17:43
尽管这是一个老问题,并且已经有了一个很好的接受答案,值得一提的是您可以(也应该)使用SORT_REGULAR,如下所示:http ://*.com/a/18203564/1412157 – LucaM 2016-04-07 08:23:27