Вопрос по php, arrays – Как я могу удалить дубликаты в массиве объектов в PHP?

2

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

class FanStruct{
    public $date; 
    public $userid;

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

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

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

Хотя это старый вопрос, и на него уже есть хороший принятый ответ, стоит упомянуть, что вы можете (и должны) использовать SORT_REGULAR, как описано здесь:stackoverflow.com/a/18203564/1412157 LucaM

Ваш Ответ

2   ответа
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>
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded__toString()Error: User Rate Limit Exceeded(object)$x == (object)$yError: User Rate Limit ExceededSORT_REGULAR.
Error: User Rate Limit Exceeded Malfist
1

$temp = array($fans[$x]);
for(var $x=1;$x<sizeof($fans);$x++) {
  if ($fans[$x]->userid != $fans[$x]->userid)
     $temp[] = $fans[$x];
}

Error: User Rate Limit Exceeded Malfist

Похожие вопросы