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
相关产品推荐
相关产品推荐

