【问题标题】:sort associative array by two values PHP [duplicate]按两个值对关联数组进行排序PHP [重复]
【发布时间】:2011-06-01 01:31:49
【问题描述】:

我有一些预订数据在一个数组中,它们已经按[eng]排序,但我也想按[ampm]排序,所以每组[eng]都按[ampm]排序。有人知道如何在 php 中完成这个吗?

    Array
(
    [xml] => Array
        (
            [booking] => Array
                (
                    [0] => Array
                    (

                        [date] => 29/12/10
                        [eng] => ALS
                        [ampm] => AM
                        [time] => 2.00
                        [type] => S
                        [seq] =>2
                        [duration] => 0

                    )

                [1] => Array
                    (

                        [date] => 29/12/10
                        [eng] => BDS
                        [ampm] => PM
                        [time] =>       2.30
                        [type] => S
                        [seq] =>       3
                        [duration] =>       0

                    )

【问题讨论】:

标签: php arrays


【解决方案1】:

大概你正在做类似的事情

usort($array, function ($a, $b) {
    return strcmp($a['eng'], $b['eng']);
});

你需要这样做:

usort($array, function ($a, $b) {
    $eng = strcmp($a['eng'], $b['eng']);

    if ($eng == 0) {
        return strcmp ($a['ampm'], $b['ampm']);
    } else {
        return $eng;
    }
});

【讨论】:

    【解决方案2】:

    您可以使用usort() 函数在其中定义一个回调来进行自己的排序比较逻辑:

    <?php
    
    function myBookingComparer($booking1, $booking2)
    {
        // the logic
    }
    
    usort($bookingArray, "myBookingComparer");
    

    【讨论】:

      【解决方案3】:

      你可以使用 usort:http://www.php.net/manual/en/function.usort.php

      这样当两个项目的eng不同时,你可以相应地返回1或-1,但如果eng相同,那么你可以比较ampm返回0、1或-1相应地。

      【讨论】:

        猜你喜欢
        • 2014-05-22
        • 2014-12-02
        • 2013-05-11
        • 2010-10-21
        • 2013-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多