根据特定属性对对象数组进行排序
P粉426780515
2023-08-21 15:57:31
<p>如何按照字段(如<code>name</code>或<code>count</code>)对这个对象数组进行排序?</p>
<pre class="brush:php;toolbar:false;">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
)
....</pre>
<p><br /></p>
这是一种使用闭包的更好的方式
请注意,这不是PHP文档中的内容,但如果您使用的是5.3+版本,支持闭包,可以提供可调用的参数。
使用usort,下面是从手册中改编的示例:
你还可以使用任何可调用作为第二个参数。以下是一些示例:
使用匿名函数(从PHP 5.3开始)
在类内部使用
使用箭头函数(从PHP 7.4开始)
另外,如果你要比较数值,
fn($a, $b) => $a->count - $b->count
作为“比较”函数应该可以解决问题,或者,如果你想以另一种方式做同样的事情,从PHP 7开始你可以使用太空船操作符,像这样:fn($a, $b) => $a->count <=> $b->count
。