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

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

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)

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

Большое спасибо 🙂

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]