我按照我想要的方式排序数组有问题。
这是我的数组的示例输出:http://pastebin.com/GJNBmqL7
数据同时来自各种数据库,因此我将数据放入数组的方式受到限制。
[2]总是包含一个linux时间戳。现在我希望整个数组按时间戳排序,首先是最低值。
我怎样才能完成这项工作?
答案 0 :(得分:11)
使用接受自定义函数的usort来排序数组:
您的功能可能类似于:
function cmp($a, $b)
{
if ($a[2] == $b[2]) {
return 0;
}
return ($a[2] < $b[2]) ? -1 : 1;
}
答案 1 :(得分:7)
您只需使用自定义排序即可完成此操作。因此,假设您的日期戳始终为索引2:
function sortArray($a1, $a2){
if ($a1[2] == $a2[2]) return 0;
return ($a1[2] > $a2[2]) ? -1 : 1;
}
usort($array, "sortArray");
答案 2 :(得分:7)
此处有一个array_multisort示例:
foreach ($array as $key => $node) {
$timestamps[$key] = $node[2];
}
array_multisort($timestamps, SORT_ASC, $array);
答案 3 :(得分:5)
usort是最容易使用的,但您也可以查看array_multisort。
答案 4 :(得分:0)
使用usort并创建自己的函数http://php.net/manual/en/function.usort.php
答案 5 :(得分:0)
function cmp($a, $b)
{
if ($a[2] == $b[2]) {
return 0;
}
return ($a[2] < $b[2]) ? -1 : 1;
}
$data = array( /* your data */ );
usort($data, "cmp");
答案 6 :(得分:0)
将数据插入单个临时表可能更容易,然后使用ORDER BY时间戳将其选中
答案 7 :(得分:0)
这可以通过以下代码实现。
usort($variable, function ($a, $b) {
if ($a['timestamp'] == $b['timestamp']) {
return 0;
}
return ($a['timestamp'] < $b['timestamp']) ? 1 : -1;
});
这将导致$ variable的排序数组,假设时间戳为 $变量[0] [ '时间戳']; $变量[0] [ '时间戳']; 等等。