search

Home  >  Q&A  >  body text

请教一个php多维数组排序问题

php新手请教一个问题;
原数组结构如下,原数组是按ads_id,time进行排序;
现在的需求是根据二维数组的num总和重新进行排序

Array
(
    [5] => Array
        (
            [0] => Array
                (
                    [num] => 840
                    [time] => 2015-10
                    [ads_id] => 5
                )

            [1] => Array
                (
                    [num] => 684
                    [time] => 2015-11
                    [ads_id] => 5
                )
        )

    [6] => Array
        (
            [0] => Array
                (
                    [num] => 23
                    [time] => 2015-10
                    [ads_id] => 6
                )

            [1] => Array
                (
                    [num] => 37
                    [time] => 2015-11
                    [ads_id] => 6
                )
        )

    [7] => Array
        (
            [0] => Array
                (
                    [num] => 280
                    [time] => 2015-10
                    [ads_id] => 7
                )

            [1] => Array
                (
                    [num] => 343
                    [time] => 2015-11
                    [ads_id] => 7
                )
        )
)

最终实现排序如下:

Array
(
    [5] => Array
        (
            [0] => Array
                (
                    [num] => 840
                    [time] => 2015-10
                    [ads_id] => 5
                )

            [1] => Array
                (
                    [num] => 684
                    [time] => 2015-11
                    [ads_id] => 5
                )
        )
        
    [7] => Array
        (
            [0] => Array
                (
                    [num] => 280
                    [time] => 2015-10
                    [ads_id] => 7
                )

            [1] => Array
                (
                    [num] => 343
                    [time] => 2015-11
                    [ads_id] => 7
                )
        )
        
    [6] => Array
        (
            [0] => Array
                (
                    [num] => 23
                    [time] => 2015-10
                    [ads_id] => 6
                )

            [1] => Array
                (
                    [num] => 37
                    [time] => 2015-11
                    [ads_id] => 6
                )
        )
)
PHP中文网PHP中文网2820 days ago363

reply all(2)I'll reply

  • 大家讲道理

    大家讲道理2017-04-10 17:03:05

    function mySort($a, $b) {
        $sumA = 0;
        $sumB = 0;
        foreach($a as $ele) {
            $sumA += $ele['num'];
        }
        foreach($b as $ele) {
            $sumB += $ele['num'];
        }
        return $sumB < $sumA;
    }
    
    usort($arr, 'mySort');

    reply
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-10 17:03:05

    使用 usort 自定义排序规则

    reply
    0
  • Cancelreply