按对象字段对对象数组排序

如何按照对象数组的某个字段(如namecount)对该数组进行排序

数组
(
[0]=>stdClass对象
(
[ID]=>1
[姓名]=>玛丽·简
[计数]=>420
)
[1] =>stdClass对象
(
[ID]=>2
[姓名]=>约翰尼
[计数]=>234
)
[2] =>stdClass对象
(
[ID]=>3
[姓名]=>凯西
[计数]=>4354
)
....

使用usort,以下是根据手册改编的示例:

函数cmp($a,$b){
返回strcmp($a->name,$b->name);
}
usort($U数据“cmp”);

您还可以使用任何callable作为第二个参数。以下是一些示例:

  • 使用匿名函数(来自PHP5.3)

    usort($a,$b){returnstrcmp($a->name,$b->name);});
    
  • 从班级内部

    usort('u data,array('this,"cmp");//quot;cmp"应该是类中的一个方法
    
  • 使用箭头函数(来自PHP7.4)

    usort($a,$b)=>strcmp($a->name,$b->name));
    

另外,如果您正在比较数值,fn($a,$b)=>$a->count-$b->count,因为“compare”函数应该会起作用,或者,如果您想用另一种方法做同样的事情,从PHP7开始,您可以使用Spaceship操作符,如下所示:fn($a,$b)=>$a->计数<=>$b->计数

发表评论