wordpress嵌套的foreach循环

时间:2014-08-11 13:41:38

标签: php arrays wordpress foreach

我目前在foreach中有一个foreach,ehre是我的代码:

$blogusers = get_users();   
global $post;   
$my_query =  get_posts('showposts=-1&post_type=friend_requests&post_status=publish');
//query_posts(array('showposts' => -1, 'post_type' => 'friend_requests', 'post_status' => array('publish') )); while (have_posts()) : the_post();

foreach($my_query as $post) :

   //do stuff

   foreach ( $blogusers as $user ) {

      echo $user;

   }

endforeach;
wp_reset_query();

我的问题是,根据$my_query数组中的项目数量,当我回显$user时,这将复制输出。例如,如果$my_query中有1个项目,$blogusers中有3个项目,则输出将如下所示:

User 1
User 2
User 3

但是,如果$my_query中有2个项目,$blogusers中有3个项目,则输出将如下所示:

User 1
User 2
User 3
User 1
User 2
User 3

为什么会发生这种情况有什么特别的原因?

2 个答案:

答案 0 :(得分:0)

您要求它循环浏览每个帖子,并为每个帖子循环遍历每个用户 - 这就是循环内部循环的作用。如果您希望将用户输出到博客帖子的上方或下方,请将用户循环移到$my_query循环的上方或下方。

例如:

foreach ($my_query as $post) :
   //do stuff

endforeach;

foreach ($blogusers as $user):
    echo $user;
endforeach;

答案 1 :(得分:0)

让我们看看能否以一种可以理解的方式解释这一点。

foreach的意思是:

foreach($my_query as $post) :

这意味着,对于$my_query中的每个项目,它将执行foreachendforeach之间的内容。

在那个foreach中,有一个新的foreach。

这意味着,对于$my_query数字1,它将执行以下操作:

foreach ( $blogusers as $user )

这意味着它将获得$blogusers,并且对于每个$user,它将输出该用户。

之后,它会对$my_query数字2执行完全相同的操作。

这对你有意义吗?