Мне нужно заказать массив, который имеет внутри разных объектов. Эти объекты имеют общий параметр. Пример:
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)
Я действительно не могу разобраться с этим. У кого-нибудь есть решение этой проблемы?
Большое спасибо 🙂
Попробуй это:
uasort ($array,
function($val1, $val2)
{
$value1 = $val1->getValue();
$value2 = $val2->getValue();
if ($value1 < $value2) {
return -1;
} elseif ($value1 > $value2) {
return 1;
} else {
return 0;
}
});
Других решений пока нет …