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

将SQL Salespeople表数据重组为层级化多维PHP数组

实现步骤

1. 先通过SQL聚合数据

先把原表中重复的销售记录合并,按销售人员、商品、单价、日期分组计算总售出数量,减少后续PHP处理的复杂度:

SELECT 
    `销售人员`,
    `售出商品`,
    `单价`,
    `售出日期`,
    SUM(`数量`) AS `总数量`
FROM Salespeople
GROUP BY `销售人员`, `售出商品`, `单价`, `售出日期`;

执行后得到的聚合数据如下:

销售人员售出商品单价售出日期总数量
JimmyLemonade122020-01-028
TerrenceGym Equipment342020-01-036
JimmyLemonade152020-01-043
JimmyGym Equipment202020-01-049

2. PHP构建层级数组

步骤1:定义基础数据

先明确需要覆盖的日期范围,初始化结果数组:

// 要覆盖的所有目标日期
$dates = ['2020-01-02', '2020-01-03', '2020-01-04'];
// 最终的层级化数组容器
$result = [];

步骤2:填充聚合数据到数组

遍历SQL查询返回的每行数据,按层级嵌套填充:

// 假设$salesData是SQL查询返回的关联数组集合
foreach ($salesData as $row) {
    $salesperson = $row['销售人员'];
    $product = $row['售出商品'];
    $price = $row['单价'];
    $date = $row['售出日期'];
    $qty = $row['总数量'];

    // 初始化销售人员层级
    if (!isset($result[$salesperson])) {
        $result[$salesperson] = [];
    }
    // 用「商品_单价」作为唯一键区分同一商品不同单价的记录
    $productPriceKey = "{$product}_{$price}";
    if (!isset($result[$salesperson][$productPriceKey])) {
        // 先给所有日期默认设为0
        $result[$salesperson][$productPriceKey] = [
            '售出商品' => $product,
            '单价' => $price,
            '日期销售数据' => array_fill_keys($dates, 0)
        ];
    }
    // 填充对应日期的实际销售数量
    $result[$salesperson][$productPriceKey]['日期销售数据'][$date] = $qty;
}

步骤3:优化数组结构(可选)

如果不需要「商品_单价」的中间键,可以调整成更直观的数组结构:

$finalResult = [];
foreach ($result as $salesperson => $productItems) {
    $finalResult[$salesperson] = [];
    foreach ($productItems as $item) {
        $finalResult[$salesperson][] = $item;
    }
}

最终得到的$finalResult结构如下,完全匹配你要的层级逻辑:

[
    'Jimmy' => [
        [
            '售出商品' => 'Lemonade',
            '单价' => 12,
            '日期销售数据' => [
                '2020-01-02' => 8,
                '2020-01-03' => 0,
                '2020-01-04' => 0
            ]
        ],
        [
            '售出商品' => 'Lemonade',
            '单价' => 15,
            '日期销售数据' => [
                '2020-01-02' => 0,
                '2020-01-03' => 0,
                '2020-01-04' => 3
            ]
        ],
        [
            '售出商品' => 'Gym Equipment',
            '单价' => 20,
            '日期销售数据' => [
                '2020-01-02' => 0,
                '2020-01-03' => 0,
                '2020-01-04' => 9
            ]
        ]
    ],
    'Terrence' => [
        [
            '售出商品' => 'Gym Equipment',
            '单价' => 34,
            '日期销售数据' => [
                '2020-01-02' => 0,
                '2020-01-03' => 6,
                '2020-01-04' => 0
            ]
        ]
    ]
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 16:45:04