2011-06-23 73 views
1

在下面的函數中,$ myrecentposts變量包含5個最新帖子的集合。如何在寫入for循環之前將這5個帖子進行重新排序,以便按照他們的數組後標題索引進行排序?如何按指定索引對數組重新排序

function getLatestPostsAndSort($post) 
{ 
    $myrecentposts = get_posts(
     array('post__not_in' => get_option('sticky_posts'), 
     'numberposts' => 5 
    ) 
//NEED TO RESORT THE ARRAY HERE BY [POST-TITLE] 
    foreach($myrecentposts as $idxrecent=>$post) 
    { 
    ?><li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li><?php 
    } 
} 

PS:顯而易見的建議可能是將它們從數據庫中以所需順序拉出。但是,get_posts()方法不提供此類選項。默認的訂單是按發佈日期(最新的第一個)。如果我將訂單更改爲「標題」,則不會考慮發佈日期,而只是拉取整個收藏集並按標題對其進行排序。

+0

可能重複(http://stackoverflow.com/questions/2699086/php-sort-multidimensional-array-by-value) – thetaiko

+0

爲什麼是'the_title()'一個不帶參數的函數嗎? – Matthew

+0

@konforce - the_title()是$ post對象的內置方法 –

回答

2

一般來說,你可以有點像數組:

usort($myrecentposts, function($a, $b) { 
    return strcmp($a['title'], $b['title']); 
}); 

您需要調整title是什麼關鍵的實際名稱是。

如果這是WordPress的,然後根據一個快速谷歌搜索,它看起來可能是:

usort($myrecentposts, function($a, $b) { 
    return strcmp($a->post_title, $b->post_title); 
}); 

如果你沒有PHP 5.3,那麼你就需要移動匿名函數成真正的一個像:

function sort_post_by_title($a, $b) { 
    return strcmp($a->post_title, $b->post_title); 
} 
usort($myrecentposts, 'sort_post_by_title'); 
[由值PHP排序多維數組]的
+0

用於WP示例。說得通。現在測試它。 –

+0

偉大的Konforce工程。太感謝了! –