我正在创建一个"固定"我的论坛的功能,我正在寻找一种方法,将我的固定主题放在数组的开头,以便它们是"卡住"到页面顶部。
如果主题未固定,则topic_pinned=NULL
如果已固定,则为topic_pinned=0
。
数组按topic_updated
排序。固定主题需要按topic_updated
排在页面顶部,然后在固定主题下是非固定主题,也按topic_updated
排序。
主题数组($forum_topic_results
):
Array
(
[0] => Array
(
[topic_id] => 4
[topic_subject] => Test Subject #4
[topic_date] => 2015-09-10 18:34:18
[topic_by] => 1
[topic_pinned] =>
[topic_updated] => 2015-09-10 20:37:22
)
[1] => Array
(
[topic_id] => 3
[topic_subject] => Test Subject #3
[topic_date] => 2015-08-22 09:24:40
[topic_by] => 1
[topic_pinned] => 0
[topic_updated] => 2015-09-04 22:02:31
)
[2] => Array
(
[topic_id] => 2
[topic_subject] => Test Subject #2
[topic_date] => 2015-08-15 10:56:00
[topic_by] => 1
[topic_pinned] =>
[topic_updated] => 2015-09-04 19:45:32
)
[3] => Array
(
[topic_id] => 1
[topic_subject] => Test Subject #1
[topic_date] => 2015-08-30 19:48:17
[topic_by] => 1
[topic_pinned] => 0
[topic_updated] => 2015-09-03 00:44:38
)
)
PHP:
/**
* getAllTopics
*
* Retreives the topics of the chosen category from the `forum_topics` table.
*
* @param $cat_id
* @access public
*/
public function getAllTopics($cat_id=NULL)
{
$database=$this->database;
$database->query('SELECT topic_id, topic_subject, topic_date, topic_by, topic_pinned, topic_locked FROM forum_topics WHERE topic_cat = :catid ORDER BY topic_updated DESC', array(':catid' => $cat_id));
$result = $database->statement->fetchAll(PDO::FETCH_ASSOC);
return $result;
}
# Get topics
$forum_topic_results = $this->getAllTopics($_GET['cat']);
foreach($forum_topic_results as $forum_topic_row)
{
# Get user's username.
$topic_by=SearchUser($forum_topic_row['topic_by']);
$data.='<tr>'.
'<td>'.
'<h3><a href="'.$_SERVER['PHP_SELF'].'?action=forum_posts&topic='.$forum_topic_row['topic_id'].'">'.$forum_topic_row['topic_subject'].'</a></h3>'.
'by '.$topic_by['username'].' on '.date('D M d, Y g:i a', strtotime($forum_topic_row['topic_date'])).
'</td>'.
'</tr>';
}
我想要的结果:
Array
(
[0] => Array
(
[topic_id] => 3
[topic_subject] => Test Subject #3
[topic_date] => 2015-08-22 09:24:40
[topic_by] => 1
[topic_pinned] => 0
[topic_updated] => 2015-09-04 22:02:31
)
[1] => Array
(
[topic_id] => 1
[topic_subject] => Test Subject #1
[topic_date] => 2015-08-30 19:48:17
[topic_by] => 1
[topic_pinned] => 0
[topic_updated] => 2015-09-03 00:44:38
)
[2] => Array
(
[topic_id] => 4
[topic_subject] => Test Subject #4
[topic_date] => 2015-09-10 18:34:18
[topic_by] => 1
[topic_pinned] =>
[topic_updated] => 2015-09-10 20:37:22
)
[3] => Array
(
[topic_id] => 2
[topic_subject] => Test Subject #2
[topic_date] => 2015-08-15 10:56:00
[topic_by] => 1
[topic_pinned] =>
[topic_updated] => 2015-09-04 19:45:32
)
)
答案 0 :(得分:0)
这应该有效:
<?php
$finalArr = $forum_topic_results;
foreach ($finalArr as $key => $row) {
$topic_pinned[$key] = $row['topic_pinned'];
}
array_multisort($topic_pinned, SORT_DESC, $finalArr);
return $finalArr;
?>
有关array_multisort
:array_multisort