【问题标题】:wordpress nested foreach loopwordpress 嵌套的 foreach 循环
【发布时间】:2014-08-11 13:41:38
【问题描述】:

我目前在一个 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

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

【问题讨论】:

  • 这是由于您的语法。你的循环打印出来是这样的:$my_query[1] -> user 1, user 2, user3; $my_query[2] -> user 1, user 2, user 3; 等等等等。我不确定你想从这段代码中实现什么,所以是否有可能获得更多关于它的用法的信息?
  • 我正在循环浏览包含用户元数据的帖子。因此,帖子将包含用户 ID 作为自定义元数据,然后我需要分别遍历用户并进行比较。

标签: php arrays wordpress foreach


【解决方案1】:

您要求它遍历每个帖子,并让每个帖子遍历每个用户 - 这就是循环中的循环所做的事情。如果您希望将用户输出到博客文章的上方或下方,请将用户循环移动到 $my_query 循环的上方或下方。

例如:

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

endforeach;

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

【讨论】:

    【解决方案2】:

    让我们看看我能不能用通俗易懂的方式解释一下。

    foreach 是什么意思:

    foreach($my_query as $post) :
    

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

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

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

    foreach ( $blogusers as $user )
    

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

    之后,它将对$my_query 2 号执行完全相同的操作。

    这对你有意义吗?

    【讨论】:

      猜你喜欢
      • 2013-05-24
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      • 2019-07-13
      • 2016-05-28
      • 2020-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多