如何在PHP中对这种类型的嵌套数组进行排序(基于索引6处的时间戳)


How to sort this type of nested array in PHP (on the basis of timestamp at index no. 6)

我是PHP多维数组的新手,所以我需要100%的工作答案。。。

我曾经尝试过使用muli排序和usort函数,但它们对我不起作用,老实说,我不知道如何在多维数组的情况下使用它们!

在我的情况下(我是如何实现多重排序的),它只是对第一天的数组进行排序

Array ( 
    [0] => Array ( 
        [0] => Array ( 
            [0] => Cycling
            [1] => 03:30 PM-04:00 PM
            [2] => Criterium International
            [3] => 0.5
            [4] => SN1
            [5] => 100
            [6] => 1459524600
        ) 
        [1] => Array ( 
            [0] => Rugby
            [1] => 03:00 PM-05:15 PM
            [2] => Super League Rugby - Wolves v Warriors
            [3] => 2.25
            [4] => SNOverflow
            [5] => 100
            [6] => 1459522800 
        ) 
        [2] => Array (
            [0] => Rugby 
            [1] => 05:00am-07:30 AM 
            [2] => National Rugby League Titans vs Broncos
            [3] => 2.5 
            [4] => SNWorld
            [5] => 100
            [6] => 1459485000 
        )
    )
    [1] => Array ( 
        [0] => Array ( 
            [0] => Rugby
            [1] => 09:45 AM-12:00 PM
            [2] => Super League Rugby - Red Devils v E
            [3] => 2.25
            [4] => SNOverflow
            [5] => 100
            [6] => 1459590300 
        )
        [1] => Array (
            [0] => Rugby
            [1] => 12:00 PM-02:00 PM
            [2] => Super League Rugby - Vikings v Dragons
            [3] => 2
            [4] => SNOverflow
            [5] => 100
            [6] => 1459598400 
        )
        [2] => Array (
            [0] => BPL Soccer
            [1] => 07:30 AM-09:45 AM
            [2] => Aston Villa v Chelsea
            [3] => 2.25
            [4] => SNRegions
            [5] => 100
            [6] => 1459582200
        )
    ) 
    [2] => Array (
        [0] => Array ( 
            [0] => The Wheel Highlights
            [1] => 11:00 PM-12:30 AM
            [2] =>
            [3] => 1.5
            [4] => Sportsnet 360
            [5] => 100
            [6] => 1459724400
        )
        [1] => Array (
            [0] => The Wheel Highlights
            [1] => 10:00 PM-11:00 PM
            [2] =>
            [3] => 1
            [4] => Sportsnet 360
            [5] => 100
            [6] => 1459720800
        )
        [2] => Array (
            [0] => CHL Hockey 
            [1] => 06:00 PM-09:00 PM
            [2] => Brandon @ Edmonton
            [3] => 3
            [4] => Sportsnet 360
            [5] => 100
            [6] => 1459706400
        )
    ) 
)

我想要的输出是这样的:

Array ( 
        [0] => Array ( 
            [0] => Array ( 
                [0] => Rugby 
                [1] => 05:00am-07:30 AM 
                [2] => National Rugby League Titans vs Broncos
                [3] => 2.5 
                [4] => SNWorld
                [5] => 100
                [6] => 1459485000 
            ) 
            [1] => Array ( 
                [0] => Rugby
                [1] => 03:00 PM-05:15 PM
                [2] => Super League Rugby - Wolves v Warriors
                [3] => 2.25
                [4] => SNOverflow
                [5] => 100
                [6] => 1459522800 
            ) 
            [2] => Array (
                [0] => Cycling
                [1] => 03:30 PM-04:00 PM
                [2] => Criterium International
                [3] => 0.5
                [4] => SN1
                [5] => 100
                [6] => 1459524600 
            )
        )
        [1] => Array ( 
            [0] => Array ( 
                [0] => BPL Soccer
                [1] => 07:30 AM-09:45 AM
                [2] => Aston Villa v Chelsea
                [3] => 2.25
                [4] => SNRegions
                [5] => 100
                [6] => 1459582200
            )
            [1] => Array (
                [0] => Rugby
                [1] => 09:45 AM-12:00 PM
                [2] => Super League Rugby - Red Devils v E
                [3] => 2.25
                [4] => SNOverflow
                [5] => 100
                [6] => 1459590300 
            )
            [2] => Array (
                [0] => Rugby
                [1] => 12:00 PM-02:00 PM
                [2] => Super League Rugby - Vikings v Dragons
                [3] => 2
                [4] => SNOverflow
                [5] => 100
                [6] => 1459598400 
            )
        ) 
        [2] => Array (
            [0] => Array ( 
                [0] => CHL Hockey 
                [1] => 06:00 PM-09:00 PM
                [2] => Brandon @ Edmonton
                [3] => 3
                [4] => Sportsnet 360
                [5] => 100
                [6] => 1459706400
            )
            [1] => Array (
                [0] => The Wheel Highlights
                [1] => 10:00 PM-11:00 PM
                [2] =>
                [3] => 1
                [4] => Sportsnet 360
                [5] => 100
                [6] => 1459720800
            )
            [2] => Array (
                [0] => The Wheel Highlights
                [1] => 11:00 PM-12:30 AM
                [2] =>
                [3] => 1.5
                [4] => Sportsnet 360
                [5] => 100
                [6] => 1459724400
            )
        ) 
    )

您的代码可能由于多级数组而失败。要对每个第一级的项目进行排序,您必须在第一级执行foreach,并通过引用对其进行处理,否则排序结果不会影响主数组:

#                  ↓ “&” means “by reference”
foreach( $array as &$sub )
{
    usort ( $sub, function( $a, $b ) { return $a[6] - $b[6]; } );
}

eval.in demo