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

PHP三层数组转置:保留中间关联键,重组适配表格生成

实现PHP三层数组的转置(横向cells重组为纵向分组)

需求说明

需要将现有横向结构的数组,转置为纵向分组结构:把原数组中每个子数组cells里同索引的元素,合并到新数组对应子数组的cells中,最终生成适合表格展示的纵向分组数组。

原数组结构

Array
(
    [0] => Array
        (
            [cells] => Array
                (
                    [0] => DEPOTS
                    [1] => PRICES
                )

        )

    [1] => Array
        (
            [cells] => Array
                (
                    [0] => 50
                    [1] => 25
                )

        )

    [2] => Array
        (
            [cells] => Array
                (
                    [0] => 100
                    [1] => 50
                )

        )
)

目标数组结构

Array
(
    [0] => Array
        (
            [cells] => Array
                (
                    [0] => DEPOTS
                    [1] => 50
                    [2] => 100
                )

        )
    [1] => Array
        (
            [cells] => Array
                (
                    [0] => PRICES
                    [1] => 25
                    [2] => 50
                )

        )
)

解决方案代码

$transposed = [];

// 遍历原数组的每一行数据
foreach ($bonus_table as $row) {
    // 遍历当前行的cells,获取索引与对应值
    foreach ($row['cells'] as $index => $value) {
        // 初始化结果数组的对应项(如果不存在)
        if (!isset($transposed[$index])) {
            $transposed[$index] = ['cells' => []];
        }
        // 将值追加到对应分组的cells中
        $transposed[$index]['cells'][] = $value;
    }
}

// 重置数组索引为连续递增的数字(可选,确保结构规整)
$transposed = array_values($transposed);

return $transposed;

代码逻辑说明

  1. 初始化空数组$transposed存储转置结果
  2. 外层循环遍历原数组的每个子项(即每一行表格数据)
  3. 内层循环遍历当前行的cells数组,通过索引$index定位到结果数组的对应分组
  4. 若结果数组中未创建对应分组,先初始化一个包含空cells的子数组
  5. 将当前值追加到对应分组的cells数组,完成纵向合并
  6. 最后用array_values()重置索引,确保数组索引为连续的0、1、2...(如果原cells的索引本来就是连续的,此步骤可省略)

原代码问题分析

你原本使用array_merge($row['cells'], $arr3)的方式,只是将每个cells数组的元素按顺序横向拼接,没有实现按索引分组的纵向合并,因此无法得到目标结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:22:37