从数组中获取字符串并开始循环

时间:2013-09-22 作者:user1735856

我正在使用此代码获取组的所有成员,登录用户是其中的成员。

问题:

$group\\u id是数组中的字符串。我的问题是,数组中有多个$value/group\\u id。在本例中,group\\u id=5和group\\u id=6,那么如何将代码更改为循环(例如使用foreach),以列出所有$value/group\\u id的所有成员,在本例中,group\\u id=5和group\\u id=6?

非常感谢。

<?php 
    $user_id = bp_loggedin_user_id();
    $groups = BP_Groups_Member::get_group_ids( $user_id );      

    foreach ($groups as $type => $properties) { 
        foreach ($properties as $property => $value) { 
            $group_id = \'group_id=\'. \' \' .$value. \' \'  .\'&exclude_admins_mods=false\';
        }
    }

if ( bp_group_has_members($group_id) ) : ?>

<div id="member-count" class="pag-count">
  <?php bp_group_member_pagination_count() ?>
</div>

<div id="member-pagination" class="pagination-links">
<?php bp_group_member_pagination() ?>
</div>

<ul id="member-list" class="item-list">
<?php while ( bp_group_members() ) : bp_group_the_member(); ?>

<li>
  <!-- Example template tags you can use -->
  <?php bp_group_member_avatar() ?>
  <?php bp_group_member_link() ?>
  <?php bp_group_member_joined_since() ?>
</li>
<?php endwhile; ?>
</ul>
<?php endif;?>

1 个回复
最合适的回答,由SO网友:Eyal 整理而成

有趣的查看bp\\u group\\u has\\u成员,它允许使用group\\u id参数只传递单个组,而我的第一个想法是它将能够传递组数组。使用您的方法,您需要多次运行循环才能获得所需的结果。我建议您首先按照上面的操作获取登录用户的组id:

$user_id = bp_loggedin_user_id();
$groups = BP_Groups_Member::get_group_ids( $user_id );
$groups = $groups[\'groups\'];
或者使用我认为更快的直接SQL语句:

$groups = $wpdb->get_col($wpdb->prepare("SELECT group_id FROM {$wpdb->prefix}bp_groups_members WHERE user_id = %d",$user_id),0);
然后使用直接SQL语句获取属于每个组的所有使用:

global $wpdb;

$allUsers = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT user_id FROM {$wpdb->prefix}bp_groups_members WHERE group_id IN (".implode(\', \', array_fill(0, count($groups), \'%s\')).")",$groups),0);
并使用常规的bp\\u has\\u members()循环显示结果,同时包含我们从上面的SQL语句中获得的用户id数组:

<?php if ( bp_has_members( array( \'include\' => $allUsers ) ) ) : ?>

    <?php while ( bp_members() ) : bp_the_member(); ?>

        <li>
            user info....

        </li>

    <?php endwhile; ?>
    </ul>

<?php endif; ?>
你可以看看here 查看bp\\u has\\u memebrs循环并获取显示所需信息所需的所有函数。

结束