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

如何修改getotherResource函数,利用数组将结果改为两行展示?

解决方案:用数组拆分实现两行展示

要把原来每行一个的复选框改成两行展示,核心思路是将员工数据数组拆分成两个子数组,分别渲染成两行内容。这里推荐使用array_chunk方法,它可以方便地把原数组按指定大小分割成多个子数组,非常适合这种分块展示的场景。

修改后的完整函数代码如下:

function getotherResource(){ 
    $result = json_decode($this->curl->simple_get($this->API.'/otherResource')); 
    
    // 处理空数据或非数组的情况,避免报错
    if(!is_array($result) || empty($result)){
        echo "";
        return;
    }

    // 将原数组拆分成2块,第一块会比第二块多1个元素(如果总数是奇数)
    $rowCount = 2;
    $itemsPerRow = ceil(count($result) / $rowCount);
    $resourceRows = array_chunk($result, $itemsPerRow);

    $html = "";
    // 循环每个子数组,生成对应的行
    foreach($resourceRows as $rowItems){
        // 用一个容器包裹整行的选项,方便样式控制
        $html .= "<div class='resource-row'>";
        foreach($rowItems as $r){ 
            // 记得用htmlspecialchars转义输出内容,防止XSS攻击
            $empId = htmlspecialchars($r->qEmployee);
            $empName = htmlspecialchars($r->employeeName);
            $html .= "<div class='m-b-xs m-t'> 
                        <label class='i-checks i-checks-md'> 
                            <input type='checkbox' name='chkotherResource' id='v-{$empId}' value='{$empName}'> 
                            <i></i> {$empName} 
                        </label> 
                      </div>"; 
        }
        $html .= "</div>";
    }

    echo $html; 
}

额外优化建议

如果希望每行内的复选框横向排列(而不是继续垂直堆叠),只需添加几行CSS样式即可:

.resource-row {
    display: flex;
    flex-wrap: wrap; /* 选项过多时自动换行,保持行的整洁 */
    gap: 1.5rem; /* 控制选项之间的间距 */
    margin-bottom: 1rem; /* 两行之间的间距 */
}

思路说明

  1. 数组拆分:通过array_chunk将原员工数组分成2个子数组,确保内容均匀分布在两行中。如果员工总数是奇数,第一行会比第二行多1个选项,保证视觉上的平衡。
  2. 安全输出:使用htmlspecialchars转义员工ID和姓名,避免潜在的XSS安全漏洞。
  3. 样式可控:用resource-row类包裹每行内容,方便后续通过CSS调整布局(横向/垂直、间距等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:58:47