如何修改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; /* 两行之间的间距 */ }
思路说明
- 数组拆分:通过
array_chunk将原员工数组分成2个子数组,确保内容均匀分布在两行中。如果员工总数是奇数,第一行会比第二行多1个选项,保证视觉上的平衡。 - 安全输出:使用
htmlspecialchars转义员工ID和姓名,避免潜在的XSS安全漏洞。 - 样式可控:用
resource-row类包裹每行内容,方便后续通过CSS调整布局(横向/垂直、间距等)。
内容的提问来源于stack exchange,提问作者Yanz Kazu
相关产品推荐
相关产品推荐

