用 属性 个对象上的对象对数组进行排序

Sort array with objects on property of objects

我想根据特定对象的 属性 对对象数组进行排序。这是我的对象数组:

如您所见,我有一个数组 $all_studies,其中包含 2 个对象 。我现在如何对对象的 graduationYear 属性 进行排序?所以我想要一个包含对象的数组,首先是对象 2010 的顺序,然后是 2014,...(在这种情况下,顺序已经正确,但这并不总是相同的..)。

这是我尝试过但没有成功的方法:

$all_studies = usort($all_studies, "sort_objects_by_graduationyear");

function sort_objects_by_graduationyear($a, $b) {
    if((int)$a->graduationYear == (int)$b->graduationYear){ return 0 ; }
    return ($a->graduationYear < $b->graduationYear) ? -1 : 1;
}

但我刚 true 回来了。我从未使用过 usort 函数,所以我真的不知道如何使用它。有人可以帮助我吗?

函数 usort returns "true" 成功。所以,好消息:).

如果你想检查排序是否完成,你只需要在usort之后检查你的$all_studies对象。

$status = usort($all_studies, "sort_objects_by_graduationyear");
print_r($all_studies);

您将 usort 的值分配给 $all_studies,即 truefalse,因此您没有获得所需的值。事实上,您只需要 sort 数组和 print 值及其全部完成

尝试

usort($all_studies, "sort_objects_by_graduationyear");

function sort_objects_by_graduationyear($a, $b) {
    if((int)$a->graduationYear == (int)$b->graduationYear){ return 0 ; }
    return ($a->graduationYear < $b->graduationYear) ? -1 : 1;
}

print_r($all_studies);

Return Values ¶

Returns TRUE on success or FALSE on failure.

Check Docs