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

时间:2018-09-12 23:22:49

标签: php

更新: 我通过ID获得数组顺序,并且将组组合在一起,如您所见,每一次考验都在一起。 我想先按ID排序,从最大到最小(反转到数组),然后在每个Class中按Name排序 我将显示示例以使其清楚。

我有这个数组:

jQuery('#rev_slider_1').show().revolution({

    sliderLayout: 'auto',

    /* OFFSET SLIDER BY THE HEIGHT OF AN ELEMENT */
    fullScreenOffsetContainer: ".navbar",

    /* options continued .... */

我想得到的过程之后:

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
    )
)

我尝试将array_multisort与2个字段一起使用,但这不起作用。 有人有主意吗?

谢谢

1 个答案:

答案 0 :(得分:0)

虽然我可以理解为什么您会这样想,但实际上这并不是我所说的分组。确实,这只是一种具有一组层次结构的条件,而不是仅一个条件的排序。您按父ID排序,然后使用ID打破平局。可以使用usort完成。

usort($data, function($a, $b) {
    //    compare group ID
    return ($a[2] - $b[2]) ?: ($a[0] - $b[0]);
    //                        compare ID if group ID is equal
});