所以我发现了很多关于排序数组和按这些对象属性排序对象数组的答案。但是如何通过排序重新排列对象中属性的顺序。
我有一个像这样的对象:
$My_Object->tabs->tab_1->priority = 3;
$My_Object->tabs->tab_2->priority = 5;
$My_Object->tabs->tab_3->priority = 1;
我尝试了以下代码,没有任何影响。
public function sort_by_priority() {
usort( $this->tabs , array( $this , 'compare' ) );
}
public function compare($a, $b) {
return strcmp($a->priority, $b->priority);
}
在类上下文中调用$ this-> sort_by_priority()。
但无论我尝试什么,对象属性总是按照它们被添加到对象的顺序。
它应按以下顺序返回:tab_3,tab_1,tab_2。
如何根据优先级属性对对象中属性的顺序进行排序?
以下是我尝试排序的实际对象的链接:https://gist.github.com/Nicholas-Cardot/d97cf6c88243fb9b2745a1d2edee19d3
答案 0 :(得分:2)
你可以尝试一下。
public function sort_by_priority() {
$tabs = new ArrayObject($this->tabs);
$tabs->uasort(function($a, $b){
return (int)$a->priority - (int)$b->priority ;
});
}