PHP MySQL:如何按表分组打印二维数组?
按TABLENAME分组展示二维数组的解决方案
别急,这个分组展示的问题很好解决!核心思路是先把原数组按TABLENAME重新分组,变成以表名为键的嵌套数组,之后再循环输出就顺畅多了。我给你一步步拆解:
第一步:先将原数组按TABLENAME分组
首先我们需要把原始的二维数组,转换成以TABLENAME为键的新数组,这样每个表名对应的就是该表下的所有字段数据。用PHP实现的代码如下:
// 假设你的原始数组是$originalArray $groupedArray = []; foreach ($originalArray as $item) { $tableName = $item['TABLENAME']; // 如果当前表名还没在分组数组里,先初始化一个空数组 if (!isset($groupedArray[$tableName])) { $groupedArray[$tableName] = []; } // 将当前数据项加入对应表名的数组中 $groupedArray[$tableName][] = $item; }
第二步:循环输出分组后的HTML表格
有了分组好的数组,接下来就可以轻松实现分组展示了——先输出每个表名作为分组标题,再输出对应表的字段表格:
// 输出分组后的HTML结构 echo '<div style="margin-bottom: 20px;">'; // 给每个分组加个间距,美观一点 foreach ($groupedArray as $tableName => $tableItems) { // 输出表名作为分组标题 echo '<h4 style="margin: 10px 0;">' . htmlspecialchars($tableName) . '</h4>'; // 开始构建表格 echo '<table border="1" cellpadding="8" cellspacing="0">'; // 输出表头(取第一个数据项的键作为表头) echo '<tr>'; foreach (array_keys($tableItems[0]) as $header) { echo '<th>' . htmlspecialchars($header) . '</th>'; } echo '</tr>'; // 输出表格数据行 foreach ($tableItems as $item) { echo '<tr>'; foreach ($item as $value) { echo '<td>' . htmlspecialchars($value) . '</td>'; } echo '</tr>'; } echo '</table>'; } echo '</div>';
小提示
- 我在代码里用了
htmlspecialchars()来转义输出内容,这是为了防止XSS攻击,处理用户输入或动态数据时一定要记得做这个操作! - 如果你的原始数组可能为空,或者某个表名下没有数据,建议在循环前加个判断,避免出现报错。
内容的提问来源于stack exchange,提问作者antoine
相关产品推荐
相关产品推荐

