Foreach在foreach中并通过它们过滤

时间:2013-02-01 09:22:17

标签: php wordpress foreach

我正在尝试通过wordpress中通过类别链接的帖子显示相关帖子,但我无法过滤结果。

此处是我的代码:

     $current_post = $post->ID;
         $i = 0;
         $categories = get_the_category();
         foreach ($categories as $category) {            
            $posts = get_posts('numberposts=4&category='. $category->term_id . '&exclude=' . $post->ID);
                foreach($posts as $post) { 
                                     // DO BASIC ECHO POST CONTENT STUFF

                     $i++;
                     if ($i == 3) break;
                         }
           } 


wp_reset_query();

我的代码存在的问题是,当一个帖子属于3个类别时(即使这不是很好的网络练习),这个循环回显12个帖子(每个类别4个帖子),如果不同的文章属于同一个3个类别,显示3次(重复)。我想展示MAX 4帖子,并且没有重复。

我认为$ i == 3休息;在第一次'全球'4结果之后会停止。但它不是吗?我怎样才能做到这一点,结果中没有重复的结果?

2 个答案:

答案 0 :(得分:1)

您可以创建显示的帖子数组,然后检查此数组中的帖子是否显示。

$show_array = array();

// ...

foreach($posts as $post) { 
   if (!in_array($post['id'], $show_array)) {
       // show post
       $show_array[] = $post['id'];
   }
}

答案 1 :(得分:0)

$current_post = $post->ID;
         $i = 0;
         $categories = get_the_category();
         foreach ($categories as $category) {            
            $posts = get_posts('numberposts=4&category='. $category->term_id . '&exclude=' . $post->ID);
                foreach($posts as $post) { 
                                     // DO BASIC ECHO POST CONTENT STUFF

                     $i++;
                     if ($i == 3) break 2;
                         }
           } 

wp_reset_query();