PHP Foreach с группами UL и LI - PullRequest
       14

PHP Foreach с группами UL и LI

0 голосов
/ 16 января 2012

У меня есть код ниже. $ related является результатом массива запроса базы данных и содержит данные.

Запрашиваемые данные состоят из сообщений, принадлежащих разным группам (post_type). Я хочу сгруппировать запрашиваемые объекты в пределах их post_type. Код ниже работает, НО ... я хочу создать разные UL для каждого post_type. Как показано ниже, в запросе будет найден пост каждого элемента UL. Таким образом, UL должен оставаться вне foreach, но с другой стороны, как я могу получить post_type из foreach? Я немного потерян здесь :(

$related = p2p_type( 'accommmodation-to-places' )->get_connected( get_queried_object_id() ); 
foreach($related->posts as $post) {
    echo '<ul class="related-'.$post->post_type.'">'; // this shouldn't be here
    if($post->post_type == 'hotels') {
        echo '<li><a href="'.get_permalink($post->ID).'" rel="permalink">'.get_the_post_thumbnail($post->id, '48').$post->post_title.'</a></li>';    
    }
    echo '</ul>'; // this shouldn't be here
}
wp_reset_query();

1 Ответ

3 голосов
/ 16 января 2012

Итак, сначала группа сообщений по типу:

$groups = array();
foreach ($related->posts as $post) {
    $groups[$post->post_type][] = $post;
}

Затем выполните цикл по группам и выведите списки:

foreach ($groups as $type => $posts) {
    printf('<ul class="%s">', htmlspecialchars($type));
    foreach ($posts as $post) {
        printf('<li>...</li>', ...);
    }
    echo '</ul>';
}
...