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

如何将PHP二维数组按列写入CSV文件?

PHP 将按列组织的二维数组写入 CSV 的简便方法

你有一个约12k大小的二维数组,数组的键(如'a'、'b'、'c')要作为CSV的表头,每个键对应的子数组是一列的数据,需要写入CSV文件。但fputcsv是按行写入的,这里给你一个直接简便的实现思路:

先看你的数组结构:

$data = array
(
    'a' => array
    (
        0 => 111,
        1 => 222,
        2 => 333,
        3 => 444,
    ),
    'b' => array
    (
        0 => 555,
        1 => 666,
        2 => 777,
        3 => 888,
    ),
    'c' => array
    (
        0 => 999,
        1 => 000,
        2 => 111,
        3 => 222,
    ),
);

实现步骤

  1. 获取表头:直接提取数组的键作为CSV第一行的表头
  2. 按行重组数据:循环每一行的索引,将各列对应位置的值拼接成一行数据,再用fputcsv写入
  3. 处理文件写入:打开目标CSV文件,依次写入表头和重组后的行数据

完整代码示例

// 打开CSV文件,准备写入
$file = fopen('output.csv', 'w');
if (!$file) {
    die('无法打开文件');
}

// 写入表头
$headers = array_keys($data);
fputcsv($file, $headers);

// 获取数据行数(假设所有子数组长度一致)
$rowCount = count(reset($data));

// 循环生成每一行数据并写入
for ($i = 0; $i < $rowCount; $i++) {
    $row = [];
    foreach ($data as $column) {
        // 若存在子数组长度不一致的情况,可添加isset判断避免报错
        $row[] = isset($column[$i]) ? $column[$i] : '';
    }
    fputcsv($file, $row);
}

// 关闭文件
fclose($file);

说明

  • 这个方法不需要依赖额外扩展,只用PHP原生函数就能实现,逻辑直观,对于12k的数据量来说效率完全够用
  • 如果你的子数组长度可能不一致,代码里的isset判断可以保证程序不会报错,缺失的位置会用空值填充

内容的提问来源于stack exchange,提问作者Arpit Jain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:03:11