Laravel使用dompdf时如何实现每个td单元格内数值逐次递增
实现方案
你可以将待展示的ID按3个为一组拆分,每组对应表格的一行,组内的每个元素对应一行内的三个单元格,就能实现逐个递增的效果,修改后的代码如下:
$html="<html><head><title> Etiquettes </title> <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/> <style> </style> </head> <body>"; $html.="<table>"; // 先提取所有要展示的ID为一维数组 $allIds = $repas_pdj->pluck('id')->toArray(); // 按3个一组拆分数组,每组对应表格一行 $idGroups = array_chunk($allIds, 3); foreach($idGroups as $group) { $html.="<tr>"; // 遍历每组的ID输出单元格 foreach($group as $id) { $html.="<td style='width:60mm;height:30mm;border:solid 1px blue;'>".$id."</td>"; } // 可选:如果最后一组不足3个,补空单元格保证表格结构完整,适配dompdf渲染 $emptyCount = 3 - count($group); for($i=0; $i<$emptyCount; $i++) { $html.="<td style='width:60mm;height:30mm;border:solid 1px blue;'></td>"; } $html.="</tr>"; } $html.="</table>"; $html.="</body></html>";
逻辑说明
- 先通过
pluck('id')把集合中所有记录的ID提取为独立的一维数组,保证顺序和原集合一致 - 用PHP内置方法
array_chunk按3个元素为一组拆分数组,每组刚好对应表格的一行 - 逐行输出时遍历组内的ID生成单元格,就不会出现同一行ID重复的问题
- 补充的空单元格逻辑可以避免最后一行不足3个时表格结构错乱,dompdf对规范的表格结构兼容性更好
如果你需要生成完全连续的数值(哪怕原记录ID不连续),可以新增一个计数器变量实现,示例逻辑如下:
$html="<html><head><title> Etiquettes </title> <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/> <style> </style> </head> <body>"; $html.="<table>"; // 定义起始ID,替换为你需要的起始值即可 $currentId = 7313; $totalCount = count($repas_pdj); // 计算需要的总行数 $rows = ceil($totalCount / 3); for($i=0; $i<$rows; $i++) { $html.="<tr>"; for($j=0; $j<3; $j++) { // 所有ID输出完后补空单元格 if($currentId <= 7313 + $totalCount -1) { $html.="<td style='width:60mm;height:30mm;border:solid 1px blue;'>".$currentId."</td>"; $currentId++; } else { $html.="<td style='width:60mm;height:30mm;border:solid 1px blue;'></td>"; } } $html.="</tr>"; } $html.="</table>"; $html.="</body></html>";
内容的提问来源于stack exchange,提问作者Youssef MK
相关产品推荐
相关产品推荐

