【问题标题】:sort an array base on key根据键对数组进行排序
【发布时间】:2011-04-05 11:47:44
【问题描述】:

我有一个这样的数组:

Array
(
    [0] => Array
        (
            [title] => some title
            [time] => 1279231500
        )

    [1] => Array
        (
            [title] => some title 2
            [time] => 1279231440
        )

    [2] => Array
        (
            [title] => some title 3
            [time] => 1279229880
        )
)

如何按时间排序?

【问题讨论】:

    标签: php arrays sorting multidimensional-array


    【解决方案1】:

    你可以这样排序(因为它是一个关联数组):

    function cmp($a, $b)
    {
       return strcmp($a['time'], $b['time']);
    }
    
    usort($your_array, "cmp");
    print_r($your_array);
    

    【讨论】:

    • 知道如何颠倒顺序吗?
    • @greenbandit - 将比较函数更改为return strcmp($b['time'], $a['time']); - usort() 是基于cmp() 排序的。
    • @reverse:要么返回-1 * strcmp(...);,要么在排序后应用array_reverse
    • 不应将strcmp 用于整数值。因为2 < 12strcmp(2, 12) === 1 意味着“2 大于12”。
    【解决方案2】:

    正如 Gumbo 所说,您不应该将 strcmp 用于整数值。

    使用此功能

    function cmp($a, $b) {
        if ($a['time'] == $b['time'])
            return 0;
        return ($a['time'] < $b['time']) ? -1 : 1;
    }
    

    【讨论】:

    • 对于整数值,return $a['time'] - $b['time']; 就足够了。
    猜你喜欢
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    • 2012-12-01
    相关资源
    最近更新 更多