我有一个看起来像
的数据结构Array
(
[0] => Array
(
[0] => something
[1] => 1296986500
)
[1] => Array
(
[0] => something else
[1] => 1296600100
)
[2] => Array
(
[0] => another thing
[1] => 1296831265
)
)
我正在尝试根据整数(即unix时间戳)对数组进行排序。以下功能对我来说是正确的,但不按我想要的方式排序。
function cmp($a, $b)
{
if ($a[1] == $b[1]) {
return 0;
}
return ($a[1] < $b[1]) ? -1 : 1;
}
注意 在类中调用此函数时,OO语法如下
uasort($_data, array($this, 'cmp'));
答案 0 :(得分:3)
按时间顺序对您的时间戳进行排序;对于降序,翻转第二个比较(即将$a[1] < $b[1]
更改为$a[1] > $b[1]
):
function cmp($a, $b)
{
if ($a[1] == $b[1]) {
return 0;
}
return ($a[1] > $b[1]) ? -1 : 1;
}
答案 1 :(得分:2)
您可以将时间戳设置为枢轴。并使用array_multisort()。
<?php
// Obtain a list of columns
foreach ($data as $key => $row) {
$time[$key] = $row[1]; //unix timestamp
}
array_multisort( $time, SORT_ASC, $data);
?>