PHP - 按时间戳排序多维数组

时间:2015-05-27 14:46:54

标签: php arrays sorting multidimensional-array

在问这里之前,我已经尝试了几次,我也见过这个question

这与我的相似但不幸的是它不起作用(或者我也可以使它工作)。

我有一个这样的数组:

    Array (

  [user_1] => Array 
            (
              [0] => Array
                (
                  [category] => string_var
                  [time] => unix_timestamp 
                ),
              [1] => Array
                (
                  [category] => string_var
                  [time] => unix_timestamp 
                ),
              [2] => Array
                (
                  [category] => string_var
                  [time] => unix_timestamp 
                )
            ),

  [user_2] => Array 
            (
              [0] => Array
                (
                  [category] => string_var
                  [time] => unix_timestamp 
                ),
              [1] => Array
                (
                  [category] => string_var
                  [time] => unix_timestamp 
                ),
              [2] => Array
                (
                  [category] => string_var
                  [time] => unix_timestamp 
                )
            )
      )

对于每个用户,我必须按时间戳排序第二级数组。

因此,我试过了:

foreach ($array as $user => $user_data) {

    timestamps = array();

    foreach($user_data as $key => $actual_data) {
       $timestamps[$key] = $actual_data['time'];
    }
    array_multisort($timestamps, SORT_ASC, $user_data);
}

unset($timestamps);
print_r($array); // the original array should now be sorted by timestamp

好吧,没有排序,最后一个数组正是=原始数组。

注意

  • 第二级数组的键['time']来自MYSQL列 它存储为BIGINT。 var_dump给了我:int(1432587949),所以它不应该是变量类型问题
  • 我也尝试了usort,结果相同:没有排序。

我哪里错了?感谢

1 个答案:

答案 0 :(得分:1)

你想做这样的事情:

www.domain.com

但是既然你说数据来自数据库,那么我建议你在那里对它们进行排序,因为它可能比在php中对它进行排序更快。