如何使用usort()按时间戳对2个数组进行排序


How do I sort 2 arrays by timestamp using usort()

我需要使用usort()按时间戳在2个数组之间排序。下面的源代码将向您展示我所拥有的内容,以及我需要合并到源代码中的内容。我必须使用usort()按时间戳对2个数组进行排序。

忽略db_open, db_query, db_fetch_all函数在我的php。这些是我设置为快捷方式的函数。

这是我所建立的,以获得我的信息,并合并两个数组。

$db = db_open();
$query = "
SELECT postings.posting_id, postings.timestamp AS posting_timestamp, users.user_name, groups.group_name FROM groups 
LEFT JOIN postings 
ON postings.group_id = groups.group_id 
LEFT JOIN users 
ON postings.user_id = users.user_id 
WHERE groups.user_id = '".$_SESSION['user']['user_id']."' 
AND postings.user_id != '".$_SESSION['user']['user_id']."'";
$result = db_query($db, $query);
$result1 = db_fetch_all($result);
$query = "SELECT postings.posting_headline, comments.timestamp AS comment_timestamp, users.user_name 
FROM postings 
LEFT JOIN comments 
ON comments.posting_id = postings.posting_id 
LEFT JOIN users 
ON comments.user_id = users.user_id WHERE postings.user_id = '".$_SESSION['user']['user_id']."' 
AND comments.user_id != '".$_SESSION['user']['user_id']."'";
$result = db_query($db, $query);
$result2 = db_fetch_all($result);
$result = array_merge((array)$result1, (array)$result2);



下面是我需要在上面的源代码中合并的内容,以便按时间戳对数组进行排序。问题是,我该怎么做?此外,我不太确定$a$b是什么。有人能解释一下他们从我的查询中得到了什么吗?

function cmp($a, $b)
{
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}
$a = array(3, 2, 5, 6, 1);
usort($a, "cmp");
foreach ($a as $key => $value) {
    echo "$key: $value'n";
}

有关ussort的更多信息:http://www.php.net/manual/en/function.usort.php

使用usort()

   function cmp($a, $b)
    {
        if ($a[2] == $b[2]) {
            return 0;
        }
        return ($a[2] < $b[2]) ? -1 : 1;
    }
另一种方法是使用array_multisort:
foreach ($array as $key => $node) {
   $timestamps[$key]    = $node[2];
}
array_multisort($timestamps, SORT_ASC, $array);