我需要订购一个包含不同对象的数组。这些对象有一个共同的参数。例如:
class One
{
private $value;
[...methods...]
}
class Two
{
private $value;
[...methods...]
}
我有一系列这些对象,我试图以这种方式使用uasort命令它们:
uasort ($array,
function($val1, $val2)
{
return ($val1 -> getValue()) < ($val2 -> getValue())
});
但每次我这样做,我都会得到一个&#34;本地&#34;顺序,在数组中,第一个位置是第一类的对象,然后是第二类的对象。像:
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 :(得分: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;
}
});