如何将PHP数组输出为每行2列(含4个td)的表格?
解决商品规格每行显示两组的PHP代码问题
我来帮你搞定这个需求!原来的代码每个规格单独占一行(2个<td>),现在要实现每行显示两组规格(4个<td>),核心是先把规格数据整理成键值对,再按每两组为一组来生成表格行,具体实现代码如下:
<?php $itemSpec = Array ( 'Brand:Adidas', 'Style:Snowsuits & Bibs', 'Country:China', 'Material:Cotton Blend', 'Sport:Bowling', 'Sleeve length:Short Sleeve', 'Theme:Liverpool' ); // 第一步:将原始数组转换为键值对数组,同时替换指定键名 $specPairs = []; foreach ($itemSpec as $v) { list($key, $value) = explode(':', $v, 2); // 用2限制分割,避免值里有冒号的情况 if ($key == "Country") { $key = "Country/Region of Manufacture"; } $specPairs[] = [ 'label' => $key, 'value' => $value ]; } // 第二步:将键值对数组按每2个一组拆分 $groupedSpecs = array_chunk($specPairs, 2); // 第三步:循环生成表格行 foreach ($groupedSpecs as $group) { echo '<tr>'; // 处理第一组规格 echo "<td>{$group[0]['label']}:</td><td>{$group[0]['value']}</td>"; // 处理第二组规格(如果存在的话) if (isset($group[1])) { echo "<td>{$group[1]['label']}:</td><td>{$group[1]['value']}</td>"; } else { // 如果最后一行只有一组,可以补空的td保持表格结构对齐 echo '<td></td><td></td>'; } echo '</tr>'; } ?>
代码说明:
- 用
explode(':', $v, 2)来分割规格,第二个参数2能避免值里包含冒号时出现分割错误的情况; array_chunk()函数可以轻松把数组按指定数量分组,这里每2个一组正好对应一行的两组规格;- 最后一行如果只有一组规格,我们补了两个空的
<td>,这样表格的结构会更整齐,如果你不需要空单元格,可以去掉这段补全的代码。
内容的提问来源于stack exchange,提问作者sam
相关产品推荐
相关产品推荐

