Как переупорядочить массив по именованному индексу - PullRequest
1 голос
/ 24 июня 2011

В приведенной ниже функции переменная $ myrecentposts содержит коллекцию из 5 последних сообщений. Как я могу взять эти 5 постов и изменить их порядок, прежде чем они будут записаны в цикл for, чтобы они упорядочивались по индексу посттитров в массиве?

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 ]

2 голосов
/ 24 июня 2011

Вообще говоря, вы можете отсортировать массив как:

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 голос
/ 24 июня 2011

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

Вам необходимо использовать usort ();

0 голосов
/ 24 июня 2011

Вы можете использовать функцию usp php: http://php.net/manual/en/function.usort.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...