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