php怎么根据数组中两个字段来排序

PHPz
发布: 2023-04-18 09:06:04
原创
1246人浏览过

在 php 中,当我们需要对数组进行排序时,可以使用 sort()、rsort() 等内置函数来对数组中的元素进行排序。但是,有时候我们需要根据数组中的两个字段来进行排序,这时就需要使用 usort() 函数了。

usort — 使用用户自定义的比较函数对数组中的值进行排序

语法:bool usort ( array &$array, callable $value_compare_func )

该函数使用指定的比较函数对数组中的值进行排序。需要注意的是,此函数直接影响原数组,它不返回排序后的数组。

使用场景

立即学习PHP免费学习笔记(深入)”;

在处理一些复杂的应用时,有时候需要按照多个字段来排序,比如优先按照价格排序,价格一样时再按照销量排序,那么我们就需要使用 usort() 函数来实现。

示例代码

阿里云-虚拟数字人
阿里云-虚拟数字人

阿里云-虚拟数字人是什么? ...

阿里云-虚拟数字人 2
查看详情 阿里云-虚拟数字人

下面是一个实际的使用 usort() 函数排序数组的例子。假设我们有一个商品数组,包含商品的名称、价格、销量等信息,现在我们需要根据价格和销量来对商品进行排序。

$products = [
   [
      "name" => "商品A",
      "price" => 100,
      "sales" => 200
   ],
   [
      "name" => "商品B",
      "price" => 120,
      "sales" => 150
   ],
   [
      "name" => "商品C",
      "price" => 80,
      "sales" => 300
   ],
];

function cmp($a, $b) {
   if ($a['price'] == $b['price']) {
      return $a['sales'] < $b['sales'] ? 1 : -1;
   }
   return $a['price'] > $b['price'] ? 1 : -1;
}

usort($products, "cmp");

print_r($products);
登录后复制

运行结果:

Array
(
    [0] => Array
        (
            [name] => 商品C
            [price] => 80
            [sales] => 300
        )

    [1] => Array
        (
            [name] => 商品A
            [price] => 100
            [sales] => 200
        )

    [2] => Array
        (
            [name] => 商品B
            [price] => 120
            [sales] => 150
        )
)
登录后复制

这里我们定义了一个 cmp() 函数,该函数用于比较两个商品的价格和销量,并按照价格从小到大、销量从大到小的顺序排序。然后通过 usort() 函数对商品数组进行排序,并打印排序后的结果。

总结

使用 usort() 函数可以灵活地对数组进行排序,可以根据多个字段进行排序,实现更加复杂的应用需求。这里需要注意,排序函数要比较的是两个数组元素,因此 $a 和 $b 分别表示数组中的两个元素,函数需要返回正数、负数和 0 三个值中的一个,表示 $a 比 $b 大、小或相等。

以上就是php怎么根据数组中两个字段来排序的详细内容,更多请关注php中文网其它相关文章!

相关标签:
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号