我在问这里之前已经试过几次了,我也看到过这个问题
与我的相似,但不幸的是它不起作用(或者我可以让它工作)。
我有一个像这样的数组:
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)
,所以它不应该是一个变量类型的问题 - 我也试过ussort,结果相同:没有排序
我错在哪里?由于
您想要这样做:
array_walk($array, function(&$arr) {usort($arr, function($a,$b){return ($a["time"] < $b["time"]) ? -1 : ($a["time"] > $b["time"] ? 1 : 0);});});
但是既然你说数据来自数据库,那么我建议你在那里排序,因为它可能比在php中排序更快。