按属性对对象数组进行排序
在各种编程场景中都会遇到对象数组。这些对象拥有多个属性,例如名称和计数。根据特定属性组织这些对象通常很有用。
自定义比较函数:usort
PHP 提供了 usort 函数用于对数组进行排序。此函数允许自定义用于排序的比较函数,使您能够指定对象排序所依据的属性。
usort 的语法如下:
usort($array, $compare_function)
其中 $array 是要排序的对象数组,$compare_function 是定义比较的可调用函数逻辑。
示例:按名称对对象进行排序
考虑以下对象数组:
$array = [ (object) ['name' => 'Mary Jane', 'count' => 420], (object) ['name' => 'Johnny', 'count' => 234], (object) ['name' => 'Kathy', 'count' => 4354], ... ];
按名称升序对数组进行排序为了排序,定义以下比较函数:
function cmp($a, $b) { return strcmp($a->name, $b->name); }
该函数比较使用 strcmp 函数的两个对象,如果 $a->name 大于 $b->name,则返回 1,如果小于,则返回 -1,如果相等,则返回 0。
最后,使用比较函数调用 usort 对数组进行排序:
usort($array, 'cmp');
替代比较选项
除了使用自定义比较函数之外,usort还支持各种其他方法来定义比较逻辑,包括:
匿名函数(PHP 5.3 ):
usort($array, function($a, $b) { return strcmp($a->name, $b->name); });
类方法:
usort($array, array($this, "cmp"));
箭头函数 ( PHP 7.4 ):
usort($array, fn($a, $b) => strcmp($a->name, $b->name));
对数值进行排序
对数字属性(例如计数)进行排序时,可以使用太空船运算符():
usort($array, fn($a, $b) => $a->count <=> $b->count);
以上是如何按特定属性对 PHP 中的对象数组进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!