0

を使用して、タイムスタンプで 2 つの配列を並べ替える必要がありますusort()。以下のソースは、私が持っているものと、ソースに組み込む必要があるものを示しています.2つの配列をタイムスタンプでソートする必要がありますusort().

私のphpで、、、関数をdb_open無視db_queryします。db_fetch_allこれらは私がショートカットとして設定した機能です。

これは、情報を取得し、2 つの配列をマージするために作成したものです。

$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";
}

usort の詳細: http://www.php.net/manual/en/function.usort.php

4

1 に答える 1

0

これは usort() を使用しています

   function cmp($a, $b)
    {
        if ($a[2] == $b[2]) {
            return 0;
        }
        return ($a[2] < $b[2]) ? -1 : 1;
    }

もう 1 つの方法は、array_multisort を使用することです。

foreach ($array as $key => $node) {
   $timestamps[$key]    = $node[2];
}
array_multisort($timestamps, SORT_ASC, $array);
于 2013-04-03T23:36:58.600 に答える