我想通过特定对象的属性对对象数组进行排序。这是包含对象的数组:
正如您所看到的,我有一个带有 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函数,所以我真的不知道如何使用它。有人能帮助我吗?
答案 0 :(得分:3)
usort 功能在成功时返回“true”。所以,好消息:)。
如果要检查排序是否完成,只需在usort之后检查$ all_studies对象。
$status = usort($all_studies, "sort_objects_by_graduationyear");
print_r($all_studies);
答案 1 :(得分:2)
您将usort
的值分配给$all_studies
true
和false
,因此您无法获得所需的值。实际上,您需要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。