Как отсортировать 2 массива по отметке времени с помощью usort()
Мне нужно отсортировать 2 массива по отметке времени, используя usort()
, Источник ниже покажет вам, что у меня есть, и что мне нужно включить в источник, я должен отсортировать 2 массива по отметке времени с usort()
,
Игнорировать db_open
, db_query
, db_fetch_all
функции в моем php. Это функции, которые я настроил как ярлыки.
Вот то, что я построил, чтобы получить мою информацию и объединить 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
1 ответ
Этот использует 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);