Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP,按字段排序不同对象的数组_Php_Arrays_Object - Fatal编程技术网

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

PHP,按字段排序不同对象的数组,php,arrays,object,Php,Arrays,Object,我需要订购一个包含不同对象的数组。这些对象有一个共同的参数。例如: class One { private $value; [...methods...] } class Two { private $value; [...methods...] } 我有一个这些对象的数组,我尝试使用uasort按如下方式对它们进行排序: uasort ($array, function($val1, $val2) { return (

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

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


class Two 
{
    private $value;
    [...methods...]
}
我有一个这些对象的数组,我尝试使用uasort按如下方式对它们进行排序:

uasort ($array,
    function($val1, $val2) 
    {
        return ($val1 -> getValue()) < ($val2 -> getValue())
    });
我需要的是:

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

比较函数应该返回-1、0或1,而不是true或false。我尝试了您的代码,但不幸的是,问题仍然是相同的对象没有排序,我想我将再次检查我的代码,以查看是否有错误
uasort ($array,
    function($val1, $val2) 
    {
        $value1 = $val1->getValue();
        $value2 = $val2->getValue();
        if ($value1 < $value2) {
            return -1;
        } elseif ($value1 > $value2) {
            return 1;
        } else {
            return 0;
        }
    });