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

时间:2015-06-08 11:42:52

标签: php arrays sorting object numbers

我想通过特定对象的属性对对象数组进行排序。这是包含对象的数组:

enter image description here

正如您所看到的,我有一个带有 2个对象的数组$all_studies。我现在如何对对象的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函数,所以我真的不知道如何使用它。有人能帮助我吗?

2 个答案:

答案 0 :(得分:3)

usort 功能在成功时返回“true”。所以,好消息:)。

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

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

答案 1 :(得分:2)

您将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);
  

返回值¶

     

成功时返回TRUE,失败时返回FALSE。

Check Docs