2009-06-26 116 views
2

我有一个对象是这样的:如何删除PHP中的对象数组中的重复项?

class FanStruct{ 
    public $date; 
    public $userid; 

    function __construct($date, $id){ 
     $this->date = $date; 
     $this->userid = $id; 
    } 
} 

我有最大的其中30在阵列中,并且它们通过$userid排序。

什么是通过阵列去除重复对象的最佳方式,并根据$userid(忽略$date)删除重复对象?

+0

尽管这是一个老问题,并且已经有了一个很好的接受答案,值得一提的是您可以(也应该)使用SORT_REGULAR,如下所示:http ://stackoverflow.com/a/18203564/1412157 – LucaM 2016-04-07 08:23:27

回答

7

这是一个简单的测试,至少应该让你开始。您的__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

1
$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