PHP, упорядочить массив различных объектов по полю

0

Мне нужно заказать массив, содержащий внутри разных объектов. Этот объект имеет общий параметр. Пример:

class One 
{
    private $value;
    [...methods...]
}


class Two 
{
    private $value;
    [...methods...]
}

У меня есть массив этих объектов, и я попытался заказать их с помощью uasort следующим образом:

uasort ($array,
    function($val1, $val2) 
    {
        return ($val1 -> getValue()) < ($val2 -> getValue())
    });

Но каждый раз, когда я делаю это, я получаю "локальный" порядок, в массиве в первых позициях находятся объекты класса One, а затем объекты класса два. Подобно:

One ($value = 10)
One ($value = 11)
One ($value = 14)
Two ($value = 9)
Two ($value = 14)
Two ($value = 19)

Что мне нужно:

Two ($value = 9)
One ($value = 10)
One ($value = 11)
Two ($value = 14)
One ($value = 14)
Two ($value = 19)

Я действительно не могу обдумать это. У кого-нибудь есть решение этой проблемы?

Большое спасибо :)

Теги:
object
arrays
order

1 ответ

0

Попробуй это:

uasort ($array,
    function($val1, $val2) 
    {
        $value1 = $val1->getValue();
        $value2 = $val2->getValue();
        if ($value1 < $value2) {
            return -1;
        } elseif ($value1 > $value2) {
            return 1;
        } else {
            return 0;
        }
    });
  • 0
    Я попробовал ваш код, но, к сожалению, проблема остается той же, объекты не упорядочены, думаю, я еще раз проверю свой код, чтобы увидеть, есть ли ошибки

Ещё вопросы

Сообщество Overcoder
Наверх
Меню