讲师中心 微信公众号
AI工具推荐 视频效率加速

如何将多维数组按供应商分组并提取零件ID列表

小萱姑娘_9230

小萱姑娘_9230

发布时间:2026-09-27 10:58:01

|

755人浏览过

|

来源于php中文网

原创

如何将多维数组按供应商分组并提取零件ID列表

本文介绍如何将包含多个供应商和零件信息的二维数组,转换为以供应商为键、零件id数组为值的嵌套结构,适用于数据聚合与报表生成场景。

本文介绍如何将包含多个供应商和零件信息的二维数组,转换为以供应商为键、零件id数组为值的嵌套结构,适用于数据聚合与报表生成场景。

在实际开发中(尤其是处理采购、库存或供应链数据时),我们常需对原始扁平化记录进行分组归集。例如,给定一个由数据库查询或API返回的关联数组,每项包含 part_id、supplier 和 quantity 字段,目标是按供应商名称聚合所有对应的零件ID,形成层级清晰的结构。

核心思路是:遍历原始数组,以 supplier 为键动态构建新数组,并将每个 part_id 追加至对应供应商下的 productID 子数组中。该过程无需预先定义键名,具备良好的扩展性与鲁棒性。

以下是可直接运行的 PHP 示例代码:

<?php
// 原始多维数组(模拟从数据库或循环中获取的数据)
$oldarr = [
    ['part_id' => 2338117, 'supplier' => 'COOLDRIVE DISTRIBUTION', 'quantity' => 12],
    ['part_id' => 2338117, 'supplier' => 'ROLAN', 'quantity' => 20],
    ['part_id' => 51154,   'supplier' => 'ROLAN', 'quantity' => 20],
];

// 初始化空数组用于存储结果
$newarr = [];

// 遍历原始数组,按 supplier 分组并收集 part_id
foreach ($oldarr as $item) {
    $supplier = $item['supplier'];
    $partId   = $item['part_id'];

    // 确保目标子数组存在,然后追加 part_id
    if (!isset($newarr[$supplier]['productID'])) {
        $newarr[$supplier]['productID'] = [];
    }
    $newarr[$supplier]['productID'][] = $partId;
}

// 输出结果(验证结构是否符合预期)
print_r($newarr);
?>

执行后将输出:

Array
(
    [COOLDRIVE DISTRIBUTION] => Array
        (
            [productID] => Array
                (
                    [0] => 2338117
                )
        )
    [ROLAN] => Array
        (
            [productID] => Array
                (
                    [0] => 2338117
                    [1] => 51154
                )
        )
)

✅ 注意事项与优化建议:

  • 代码中使用 isset() 显式检查子数组是否存在,避免未定义索引警告(尤其在严格错误报告环境下);
  • 若需去重(如同一供应商多次出现相同 part_id),可在追加前使用 !in_array($partId, $newarr[$supplier]['productID']) 判断;
  • 如需保持插入顺序或进一步排序,可在循环结束后对各 productID 数组调用 array_unique() 和 sort();
  • 在现代 PHP(≥7.4)中,也可结合 array_reduce() 实现函数式写法,但 foreach 方案更直观、易调试、性能稳定。

该方法简洁高效,适用于中小型数据集;若处理海量数据(如万级条目),建议结合数据库 GROUP BY supplier + GROUP_CONCAT(part_id) 预聚合,减少 PHP 层计算压力。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

2360

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

229

2026.02.03

python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

2360

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

229

2026.02.03

switch语句用法
switch语句用法

switch语句用法:1、Switch语句只能用于整数类型,枚举类型和String类型,不能用于浮点数类型和布尔类型;2、每个case语句后面必须跟着一个break语句,以防止执行其他case的代码块,没有break语句,将会继续执行下一个case的代码块;3、可以在一个case语句中匹配多个值,使用逗号分隔;4、Switch语句中的default代码块是可选的等等。

1031

2023.09.21

Java switch的用法
Java switch的用法

Java中的switch语句用于根据不同的条件执行不同的代码块。想了解更多switch的相关内容,可以阅读本专题下面的文章。

1377

2024.03.13

switch语句用法
switch语句用法

switch语句用法:1、Switch语句只能用于整数类型,枚举类型和String类型,不能用于浮点数类型和布尔类型;2、每个case语句后面必须跟着一个break语句,以防止执行其他case的代码块,没有break语句,将会继续执行下一个case的代码块;3、可以在一个case语句中匹配多个值,使用逗号分隔;4、Switch语句中的default代码块是可选的等等。

1031

2023.09.21

Java switch的用法
Java switch的用法

Java中的switch语句用于根据不同的条件执行不同的代码块。想了解更多switch的相关内容,可以阅读本专题下面的文章。

1377

2024.03.13

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

120

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn