如何通过命名索引重新排序数组

时间:2011-06-23 21:24:24

标签: php wordpress for-loop sorting

在下面的函数中,$ myrecentposts变量包含5个最新帖子的集合。如何在将它们写入for循环之前将这5个帖子重新排序并重新排序,以便按照它们在数组中的post-title索引进行排序?

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()方法不提供此类选项。默认顺序是发布日期(最新的第一个)。如果我将订单更改为“标题”,则不会考虑发布日期,而只是拉动整个帖子集合并按标题排序。

3 个答案:

答案 0 :(得分:2)

一般来说,您可以对数组进行排序,如:

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

您需要将title调整为密钥的实际名称。

如果这是wordpress,那么基于快速Google搜索,它看起来可能是:

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');

答案 1 :(得分:1)

http://php.net/manual/en/function.usort.php

您需要使用usort();

答案 2 :(得分:0)

你可以使用php的usort函数:http://php.net/manual/en/function.usort.php