如何按其中一个字段(如nameor )对该对象数组进行排序count?
name
count
Array ( [0] => stdClass Object ( [ID] => 1 [name] => Mary Jane [count] => 420 ) [1] => stdClass Object ( [ID] => 2 [name] => Johnny [count] => 234 ) [2] => stdClass Object ( [ID] => 3 [name] => Kathy [count] => 4354 ) ....
使用usort,这是一个改编自手册的示例:
function cmp($a, $b) { return strcmp($a->name, $b->name); } usort($your_data, "cmp");
您还可以使用任何可调用对象作为第二个参数。这里有些例子:
使用匿名函数(来自 PHP 5.3)
usort($your_data, function($a, $b) {return strcmp($a->name, $b->name);});
从班级内部
usort($your_data, array($this, "cmp")); // "cmp" should be a method in the class
使用箭头函数(来自 PHP 7.4)
usort($your_data, fn($a, $b) => strcmp($a->name, $b->name));
此外,如果您要比较数值,fn($a, $b) => $a->count - $b->count“比较”函数应该可以解决问题,或者,如果您想要另一种方式来做同样的事情,从 PHP 7 开始,您可以使用Spaceship 运算符,如下所示fn($a, $b) => $a->count <=> $b->count:
fn($a, $b) => $a->count - $b->count
fn($a, $b) => $a->count <=> $b->count