Как я могу удалить дубликаты в массиве объектов в PHP? - PullRequest
2 голосов
/ 26 июня 2009

У меня есть такой объект:

class FanStruct{
    public $date; 
    public $userid;

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

У меня максимум 30 из них в массиве, и они отсортированы по $userid.

Как лучше всего пройти через массив и удалить дубликаты объектов на основе $userid (игнорируя $date)?

Ответы [ 2 ]

7 голосов
/ 26 июня 2009

Вот простой тест, который, по крайней мере, должен помочь вам начать. Возможно, ваш метод __toString должен быть более сложным, чтобы генерировать уникальность для ваших экземпляров FanStruct

</p>

<code><?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 ) );

?>
1 голос
/ 26 июня 2009
$temp = array($fans[$x]);
for(var $x=1;$x<sizeof($fans);$x++) {
  if ($fans[$x]->userid != $fans[$x]->userid)
     $temp[] = $fans[$x];
}

Требуется временная переменная, но работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...