PHP,按字段排序不同对象的数组

时间:2014-11-10 17:09:42

标签: php arrays object

我需要订购一个包含不同对象的数组。这些对象有一个共同的参数。例如:

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)

我真的无法理解这一点。有没有人解决这个问题?

非常感谢:)

1 个答案:

答案 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;
        }
    });