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

PHP如何将键相同但值和顺序不同的多维数组导出为CSV文件

问题根源

  • 原有遍历逻辑错误:直接遍历外层的语言维度,导致每一行对应一种语言,而非同一键的多语言值
  • 子数组内部键顺序不统一,直接调用array_values()会按数组当前的内部顺序取值,导致列错位

修正代码

固定语言版本(适配你当前的数组结构)

$header = array(
    'Key', 'English', 'Spanish', 'German'
);

$f_name = 'lang.csv';
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=$f_name");
$output = fopen("php://output" , "w");

// 可选:添加UTF-8 BOM,解决Excel打开乱码问题
fwrite($output, "\xEF\xBB\xBF");

fputcsv($output, $header);

// 获取所有公共键并升序排序,保证行顺序统一
$allKeys = array_keys(reset($array));
sort($allKeys);

// 按统一键遍历,组装同一键的多语言值
foreach ($allKeys as $key) {
    $row = [
        $key,
        $array['English'][$key],
        $array['Spanish'][$key],
        $array['German'][$key]
    ];
    fputcsv($output, $row);
}

fclose($output);

通用动态版本(适配语言数量动态变化的场景)

$f_name = 'lang.csv';
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=$f_name");
$output = fopen("php://output" , "w");

// 可选:添加UTF-8 BOM,解决Excel打开乱码问题
fwrite($output, "\xEF\xBB\xBF");

// 自动生成表头
$languages = array_keys($array);
$header = array_merge(['Key'], $languages);
fputcsv($output, $header);

// 获取所有公共键并升序排序
$allKeys = array_keys(reset($array));
sort($allKeys);

foreach ($allKeys as $key) {
    $row = [$key];
    foreach ($languages as $lang) {
        // 兼容部分语言缺失对应键的场景
        $row[] = $array[$lang][$key] ?? '';
    }
    fputcsv($output, $row);
}

fclose($output);

内容的提问来源于stack exchange,提问作者Ahmad Mardini

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:36:04