Php 如何按对象属性之一对其进行排序(而不是对数组排序)?
所以我找到了大量关于排序数组和按对象属性排序对象数组的答案。但是如何通过排序重新排列对象中属性的顺序呢 我有一个物体是这样布置的:Php 如何按对象属性之一对其进行排序(而不是对数组排序)?,php,oop,Php,Oop,所以我找到了大量关于排序数组和按对象属性排序对象数组的答案。但是如何通过排序重新排列对象中属性的顺序呢 我有一个物体是这样布置的: $My_Object->tabs->tab_1->priority = 3; $My_Object->tabs->tab_2->priority = 5; $My_Object->tabs->tab_3->priority = 1; 我已经尝试了以下代码,没有任何影响 public function sort_
$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
如何根据优先级属性对对象中属性的顺序进行排序
这里有一个指向我试图排序的实际对象的链接:您可以试试
public function sort_by_priority() {
$tabs = new ArrayObject($this->tabs);
$tabs->uasort(function($a, $b){
return (int)$a->priority - (int)$b->priority ;
});
}
你可以试试
public function sort_by_priority() {
$tabs = new ArrayObject($this->tabs);
$tabs->uasort(function($a, $b){
return (int)$a->priority - (int)$b->priority ;
});
}
这已经足够让我找到解决办法了。必须将$a->pro更改为$a->优先级。此外,还必须编写一个intcmp()函数来计算整数,就像strcmp()计算字符串一样。现在它就像雨一样,是我的错。我忘了把它换回来。哈哈。如果你加上这个,那么你的答案将绝对是我问题的完美答案:公共函数intcmp($a,$b){If((int)$a==(int)$b)返回0;If((int)$a>(int)$b)返回1;If((int)$a<(int)$b)返回-1;}这已经足够接近我的答案了。必须将$a->pro更改为$a->优先级。此外,还必须编写一个intcmp()函数来计算整数,就像strcmp()计算字符串一样。现在它就像雨一样,是我的错。我忘了把它换回来。哈哈。如果你加上这个,那么你的答案绝对是我问题的完美答案:公共函数intcmp($a,$b){If((int)$a==(int)$b)返回0;If((int)$a>(int)$b)返回1;If((int)$a<(int)$b)返回-1;}