You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PHP将两个数组导出为带双表头双列的CSV文件

问题原因

你构造的$data结构错误:你将两个完整的一维数组作为了单一行的两个字段值,CSV输出时会把整个数组转为字符串放在对应列,无法实现两个数组同索引元素对应为一行两列的效果。同时你提供的原始代码存在语法错误,$data数组定义没有完成闭合。

修正方案

你需要先将两个数组按索引配对,逐行构造CSV需要的二维数据结构,示例代码如下:

// 假设你的两个原始数组为$first_array、$second_array
$first_array = ['KDS-1655B', 'KS-9916', 'KDS-1197', 'KDS-4164', 'MRK-1994', 'KDS-9773'];
$second_array = ['PRODUCTNAME1', 'PRODUCTNAME2', 'PRODUCTNAME3', 'PRODUCTNAME4', 'PRODUCTNAME5', 'PRODUCTNAME6'];

$filename = 'mycsv.csv';
$delimiter = ',';

$f = fopen('php://memory', 'w');

// 写入表头
$headings = ['firstheader', 'secondheader'];
fputcsv($f, $headings, $delimiter);

// 按索引配对两个数组的元素,逐行写入
// 取两个数组的最小长度作为遍历上限,避免下标越界
$maxIndex = min(count($first_array), count($second_array));
for ($i = 0; $i < $maxIndex; $i++) {
    $row = [
        $first_array[$i],
        $second_array[$i]
    ];
    fputcsv($f, $row, $delimiter);
}

// 输出CSV文件
fseek($f, 0);
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="' . $filename . '";');
fpassthru($f);
fclose($f);
exit();

说明

  • 代码中用min()取两个数组的最小长度作为遍历边界,避免两个数组长度不一致时出现下标不存在的报错
  • 每次遍历都取两个数组同下标的值组成一行,写入CSV后自然对应两个表头的两列内容
  • 同时修正了原始代码中filename参数的HTML实体转义问题,直接用双引号包裹文件名即可

内容的提问来源于stack exchange,提问作者Arda Ustundag

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:54:01