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

如何用PHP嵌套循环将PhpSpreadsheet读取的Excel数据整理为多维数组并转JSON

需求完全可实现:PhpSpreadsheet读取Excel后转指定结构数组并生成JSON

这个需求完全可以实现,PhpSpreadsheet能稳定读取Excel数据,PHP的数组操作可以灵活将原始数据整理为任意指定的多维结构,最终通过json_encode()生成JavaScript可直接解析的JSON格式。

实现步骤及示例代码

假设你已经通过PhpSpreadsheet成功读取到原始Excel数据(比如二维数组形式),以下是核心处理逻辑:

1. 原始读取数据示例

假设PhpSpreadsheet读取的原始数据如下(表头+行数据):

// 示例:PhpSpreadsheet读取到的原始数组
$rawExcelData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);
// 或者手动逐行读取的结果,结构类似:
$rawExcelData = [
    ['姓名', '年龄', '所属部门', '负责项目'],
    ['张三', 28, '技术部', 'A系统开发'],
    ['张三', 28, '技术部', 'B性能优化'],
    ['李四', 32, '产品部', 'C需求迭代']
];

2. 整理为指定多维数组结构

假设你期望的目标结构是按用户分组,每个用户下包含多个负责项目:

$targetStructure = [
    [
        'name' => '张三',
        'age' => 28,
        'department' => '技术部',
        'projects' => ['A系统开发', 'B性能优化']
    ],
    [
        'name' => '李四',
        'age' => 32,
        'department' => '产品部',
        'projects' => ['C需求迭代']
    ]
];

对应的整理代码:

// 提取表头
$headers = array_shift($rawExcelData);
$targetArray = [];
$userIndexMap = [];

foreach ($rawExcelData as $row) {
    $userName = $row[array_search('姓名', $headers)];
    // 检查用户是否已存在,避免重复创建
    if (!isset($userIndexMap[$userName])) {
        $userIndexMap[$userName] = count($targetArray);
        $targetArray[] = [
            'name' => $userName,
            'age' => $row[array_search('年龄', $headers)],
            'department' => $row[array_search('所属部门', $headers)],
            'projects' => []
        ];
    }
    // 添加项目到对应用户的列表中
    $targetArray[$userIndexMap[$userName]]['projects'][] = $row[array_search('负责项目', $headers)];
}

3. 转换为JSON格式

使用json_encode()生成兼容JavaScript的JSON,注意启用JSON_UNESCAPED_UNICODE避免中文转义:

$jsonResult = json_encode($targetArray, JSON_UNESCAPED_UNICODE);
// 输出给JavaScript使用,比如通过接口返回或直接嵌入页面
echo $jsonResult;

关键说明

  • 无论你的目标结构是单层对象数组还是多层嵌套结构,都可以通过PHP的循环、数组赋值、条件判断等操作实现数据映射。
  • 如果原始Excel的表头或列位置固定,也可以直接通过索引(如$row[0])读取数据,比array_search()更高效。
  • 若需要处理大量数据,建议逐行读取Excel(而非一次性转成数组),避免内存占用过高。

内容的提问来源于stack exchange,提问作者goodnight sir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:50:25