首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用分组按两个字段值对数组进行排序

使用分组按两个字段值对数组进行排序
EN

Stack Overflow用户
提问于 2018-09-13 07:22:49
回答 1查看 34关注 0票数 0

更新:我得到了按ID排序的数组,在分组的情况下,正如你所看到的,每个类都在一起。我想首先按ID排序,从最大到最小(反向到数组),然后在每个按名称排序的类中,我将显示示例以使其清晰。

我有这个数组:

代码语言:javascript
复制
Array 
(
[0] => Array
    (
        [0] => 1 //ID
        [1] => 88 //Class
        [2] => 'a' //Name
    )
[1] => Array
    (
        [0] => 2 //ID
        [1] => 88 //Class
        [2] => 'b' //Name
    )
[2] => Array
    (
        [0] => 3 //ID
        [1] => 7 //Class
        [2] => 'v' //Name
    )
[3] => Array
    (
        [0] => 4 //ID
        [1] => 332 //Class
        [2] => 'd' //Name
    )
[4] => Array
    (
        [0] => 5 //ID
        [1] => 332 //Class
        [2] => 'z' //Name
    )
)

在这个过程之后,我想要得到:

代码语言:javascript
复制
Array 
(
[0] => Array
    (
        [0] => 4 //ID
        [1] => 332 //Class
        [2] => 'd' //Name
    )
[1] => Array
    (
        [0] => 5 //ID
        [1] => 332 //Class
        [2] => 'z' //Name
    )
[2] => Array
    (
        [0] => 3 //ID
        [1] => 7 //Class
        [2] => 'v' //Name
    )
[3] => Array
    (
        [0] => 1 //ID
        [1] => 88 //Class
        [2] => 'a' //Name
    )
[4] => Array
    (
        [0] => 2 //ID
        [1] => 88 //Class
        [2] => 'b' //Name
    )
)

我试着在两个字段中使用array_multisort,但这不起作用。有谁有主意吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-09-13 07:32:20

这并不是我所说的分组,尽管我能理解为什么你会这样想。实际上,这只是一种具有分层标准集的排序,而不仅仅是一个单一的标准。您可以按父ID排序,然后使用ID来打破平局。这可以用usort来完成。

代码语言:javascript
复制
usort($data, function($a, $b) {
    //    compare group ID
    return ($a[2] - $b[2]) ?: ($a[0] - $b[0]);
    //                        compare ID if group ID is equal
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52304704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档