我目前在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
为什么会发生这种情况有什么特别的原因?
答案 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
中的每个项目,它将执行foreach
和endforeach
之间的内容。
在那个foreach中,有一个新的foreach。
这意味着,对于$my_query
数字1,它将执行以下操作:
foreach ( $blogusers as $user )
这意味着它将获得$blogusers
,并且对于每个$user
,它将输出该用户。
之后,它会对$my_query
数字2执行完全相同的操作。
这对你有意义吗?