2015-06-08 50 views
2

的属性的对象,我想通过所述特定对象的属性进行排序的对象的阵列。这是我的数组对象:排序阵列上的对象

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函数,所以我不知道如何使用它。有人能帮我吗?

+0

见[链接](http://stackoverflow.com/questions/4282413/sort-array-of-objects-by-object-fields) –

+0

'usort'各种各样的地方,它不*返回*结果。请参阅[手册](http://php.net/usort)中的示例。 – deceze

+0

如果我想要改变顺序,从大到小,如何改变它的功能以使其工作,thansk? –

回答

3

功能上成功usort返回 “真”。所以,好消息:)。

如果要检查排序完成后,你只需要检查usort后您的$ all_studies对象。

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

你被分配的usort$all_studies值which'll是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