PHP中如何无键动态构建二维数组适配SimpleXLSXGen生成Excel?
解决动态构建Excel报表二维数组的问题
问题出在你动态赋值的语法上:$rows[][] = ... 每次执行都会向$rows中新增一个独立的一维数组,导致每个字段值都单独占一行。正确的做法是,先为数据库的每一行创建一个临时一维数组,把所有字段值填充进去后,再将这个临时数组加入到$rows中。
修正后的代码
while ($row = mysqli_fetch_assoc($query)) { // 为当前数据库行创建临时数组 $current_row = []; // 注意你原来的循环从i=1开始,是否要包含field0?根据实际需求调整起始值 for ($i = 0; $i < $field_count; $i++) { $current_row[] = $row["field" . $i]; } // 将当前行的数组加入到二维数组中 $rows[] = $current_row; }
额外优化(如果字段名和查询结果键完全匹配)
如果你的查询结果里的键就是field0、field1...fieldN,且顺序符合需求,直接用array_values()就能把关联数组转成索引数组,省掉循环:
while ($row = mysqli_fetch_assoc($query)) { // 把关联数组的所有值按顺序提取成索引数组,直接加入$rows $rows[] = array_values($row); }
这样生成的二维数组就和你静态写法的结构完全一致,符合SimpleXLSXGen的要求了。
内容的提问来源于stack exchange,提问作者Vit.
相关产品推荐
相关产品推荐

