如何在LucidFrame ConsoleTable中实现表格每两行重复表头
实现每2行重复表头的代码调整方案
核心逻辑是加入行数计数器,每累计满2行就输出当前分段的表格内容,重置表格实例后重新加载表头和头部声明,继续处理后续数据。
调整后的完整代码如下:
// 初始化总内容拼接变量,先加入首次的头部声明 $totalContent = $finalHead; // 行数计数器 $rowCount = 0; // 首次初始化表格 $table = new ConsoleTable(); $table->setHeaders($strData->header)->hideBorder(); foreach ($strData->body as $ins) { $items = []; foreach ($ins as $key => $value) { $items[] = $value; } $table->addRow($items); $rowCount++; // 每满2行就输出当前段,重置表格准备下一段 if ($rowCount == 2) { // 拼接当前段的表格内容 $totalContent .= $table->getTable(); // 加入下一段的头部声明 $totalContent .= $finalHead; // 重置表格实例,重新加载表头 $table = new ConsoleTable(); $table->setHeaders($strData->header)->hideBorder(); // 计数器归零 $rowCount = 0; } } // 循环结束后拼接剩余不足2行的内容 if ($rowCount > 0) { $totalContent .= $table->getTable(); } // 统一加底部边框和页脚 $totalContent .= (new ConsoleTable())->addBorderLine()->getTable() . $finalFooter; // 写入文件 fwrite($fp, str_replace(['<pre >', '</pre>'], '', $totalContent)); fclose($fp);
关键改动说明
- 新增
$totalContent变量分段拼接所有内容,避免单次生成全表时无法插入重复表头的问题 - 新增
$rowCount计数器控制插入表头的频率,满2行就重置表格重新加载表头和头部声明 - 循环结束后额外处理剩余不足2行的数据,避免内容遗漏
- 末尾统一加底部边框,保证输出格式和需求完全匹配
内容的提问来源于stack exchange,提问作者gopi.jtech
相关产品推荐
相关产品推荐

