首页 > 后端开发 > php教程 > 如何按特定属性对 PHP 中的对象数组进行排序?

如何按特定属性对 PHP 中的对象数组进行排序?

Barbara Streisand
发布: 2024-12-27 03:08:17
原创
555 人浏览过

How Can I Sort an Array of Objects in PHP by a Specific Property?

按属性对对象数组进行排序

在各种编程场景中都会遇到对象数组。这些对象拥有多个属性,例如名称和计数。根据特定属性组织这些对象通常很有用。

自定义比较函数: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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板