You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP实现每5个团队成员生成独立<section>的问题求助

问题解决:每5个团队成员生成一个<section>

问题背景

作为PHP完全新手,现有代码通过mysqli从数据库获取rank为'HELFER'的团队成员code,用于生成网站团队页面。原本所有成员被放在一个<section>中,随着团队人数增多,需要每个<section>仅显示5个团队成员,即每5个成员组成一个<section>,依次循环。自行修改时出现成员丢失、重复显示等问题,参考代码更是导致所有成员消失。

原代码问题分析

原代码将所有成员的code拼接成一个字符串,仅根据总数量调整<section>的内边距,但未实现分段逻辑,无法满足每5个成员一个<section>的需求。

参考代码问题分析

参考代码使用array_chunk实现了分段,但存在两个关键问题:

  • 循环中每次覆盖$code变量,最终仅返回最后一个<section>的内容
  • 使用implode(",", ...)给成员code添加了逗号分隔符,不符合原代码直接拼接的逻辑

修正后的代码

function team_helfer() {
    $db = new mysqli("ip", $username, $password, $database);
    $result = mysqli_query($db, "SELECT code FROM team_data WHERE rank = 'HELFER'");
    
    // 取出所有成员数据并统计总数
    $all_members = [];
    while ($row = mysqli_fetch_assoc($result)) {
        $all_members[] = $row['code'];
    }
    
    // 将成员按每5个一组拆分
    $member_sections = array_chunk($all_members, 5);
    $final_code = '';
    
    foreach ($member_sections as $section_members) {
        $section_count = count($section_members);
        $team_list = implode('', $section_members); // 保持原逻辑直接拼接code
        $left_style = '';
        
        // 保留原有的数量判断,调整内边距
        if ($section_count == 2) {
            $left_style = 'style="left: 17%;"';
        } elseif ($section_count == 1) {
            $left_style = 'style="left: 33%;"';
        }
        
        // 累加每个section的HTML代码
        $final_code .= '<section class="elementor-section elementor-inner-section elementor-element elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-element_type="section">
                            <div class="elementor-container elementor-column-gap-default" ' . $left_style . '>
                                ' . $team_list . '
                            </div>
                        </section>';
    }
    
    mysqli_free_result($result);
    $db->close();
    return $final_code;
}
add_shortcode( 'team_helfer', 'team_helfer' );

代码说明

  • 先取出所有成员的code,再用array_chunk按每5个一组拆分
  • 循环处理每个分组,根据当前组的成员数量设置对应的内边距样式
  • 使用$final_code累加每个<section>的HTML,确保所有分段内容都被返回
  • 保留原代码直接拼接成员code的逻辑,不添加额外分隔符

内容的提问来源于stack exchange,提问作者anon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 15:10:42