PHP:多条件聚合多维数组数据

php:多条件聚合多维数组数据

本文旨在解决在PHP中,如何根据多重条件(例如:是否应税、金额正负)对多维数组中的数据进行聚合的问题。我们将提供一个实际案例,展示如何针对供应商的子项目(SubLineItems)数组,按照应税/非应税以及正/负销售额进行分组和汇总,最终生成包含聚合数据的数组。通过本文,你将学习到处理复杂数据结构和应用条件逻辑进行数据分析的实用技巧。

在实际的PHP开发中,我们经常需要处理复杂的数据结构,例如多维数组。而对这些数据进行聚合,往往需要根据多个条件进行判断和分组。本文将通过一个实际的例子,详细讲解如何使用PHP对多维数组进行多条件聚合。

案例背景

假设我们有一个多维数组 $arr_sublineitems,它存储了多个供应商的子项目(SubLineItems)信息。每个子项目包含以下关键信息:

VendorId: 供应商IDQuantity: 数量SellPrice: 销售单价FreightSell: 运费(销售)NetPrice: 净价FreightNet: 运费(净价)Taxable: 是否应税(布尔值)ProjectId: 项目IDTotal_Sell: 总销售额(SellPrice * Quantity)

我们的目标是,针对每个供应商,按照以下四个条件对Total_Sell进行聚合:

立即学习“PHP免费学习笔记(深入)”;

应税且总销售额大于0 (Taxable & Total_Sell youjiankuohaophpcn 0)应税且总销售额小于0 (Taxable & Total_Sell 0)非应税且总销售额小于0 (Non-Taxable & Total_Sell < 0)

最终,我们希望得到一个数组 $arr_vendor_totals,其中键为VendorId,值为包含聚合数据的数组。

实现方法

以下是一种实现该目标的PHP代码:

 0) {            $arr_vendor_totals[$vendor_id] = ['FreightSell' => $item['FreightSell'], 'Total_Taxable' => $item['Total_Sell']];        } elseif ($item['Taxable'] && $item['Total_Sell']  $item['FreightSell'],                                    'Total_Taxable' => $item['Total_Sell']];        } elseif (!$item['Taxable'] && $item['Total_Sell'] > 0) {            $arr_vendor_totals[$vendor_id]['Total_NonTaxable'] = ['FreightSell' => $item['FreightSell'],                                    'Total_Taxable' => $item['Total_Sell']];        } elseif (!$item['Taxable'] && $item['Total_Sell']  $item['FreightSell'],                                    'Total_Taxable' => $item['Total_Sell']];        }        continue; // 跳过本次循环,处理下一个子项目    }    // 如果供应商ID已存在于结果数组中,则累加对应的值    if (array_key_exists($vendor_id, $arr_vendor_totals)){        if ($item['Taxable'] && $item['Total_Sell'] > 0) {            $arr_vendor_totals[$vendor_id]['Total_Taxable'] += $item['Total_Sell'];        } elseif ($item['Taxable'] && $item['Total_Sell']  0) {            $arr_vendor_totals[$vendor_id]['Total_NonTaxable'] += $item['Total_Sell'];        } elseif (!$item['Taxable'] && $item['Total_Sell'] 

代码解释:

初始化结果数组: $arr_vendor_totals = []; 创建一个空数组,用于存储聚合后的数据。遍历子项目数组: foreach ($arr_sublineitems as $item) { … } 遍历每一个子项目。获取供应商ID: $vendor_id = $item[‘VendorId’]; 从当前子项目中获取供应商ID。检查供应商ID是否存在: if (!array_key_exists($vendor_id, $arr_vendor_totals)) { … } 判断当前供应商ID是否已经存在于结果数组中。如果不存在,说明这是该供应商的第一个子项目,需要进行初始化。根据条件初始化: 在if块中,使用多个elseif语句,根据Taxable和Total_Sell的值,将对应的FreightSell和Total_Sell添加到结果数组中。注意,这里使用了数组字面量简写形式[],等价于array()。累加值: 在else块中,表示该供应商ID已经存在于结果数组中,则直接将Total_Sell累加到对应的字段中。输出结果: print_r($arr_vendor_totals); 打印最终的聚合结果。

代码优化与注意事项

代码可读性: 可以考虑将条件判断部分提取成单独的函数,以提高代码的可读性和可维护性。错误处理: 实际应用中,应该加入错误处理机制,例如检查$item数组中是否存在必要的键。性能优化: 对于非常大的数据集,可以考虑使用更高效的数据结构或算法,例如使用SplObjectStorage。数据类型: 确保Total_Sell是数值类型,否则可能导致计算错误。可以使用floatval()或intval()进行转换。键名常量化: 将数组键名定义为常量,可以避免手误,提高代码质量。 例如 define(‘TOTAL_TAXABLE’, ‘Total_Taxable’);

总结

本文通过一个实际案例,详细讲解了如何使用PHP对多维数组进行多条件聚合。通过合理使用foreach循环和条件判断,我们可以灵活地处理复杂的数据结构,并根据业务需求进行数据分析和处理。在实际开发中,需要注意代码的可读性、错误处理和性能优化,以确保代码的质量和效率。

以上就是PHP:多条件聚合多维数组数据的详细内容,更多请关注php中文网其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/36059.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
智谱清言官网首页地址 智谱清言智能对话平台直达官方链接
上一篇 2026年10月25日 05:44:45
Oracle SQL中除法运算的用法
下一篇 2025年11月15日 20:28:52

相关推荐

  • 智谱清言官网首页地址 智谱清言智能对话平台直达官方链接

    智谱清言官网首页地址 智谱清言智能对话平台直达官方链接智谱清言官网首页地址 智谱清言智能对话平台直达官方链接智谱清言官网首页地址 智谱清言智能对话平台直达官方链接智谱清言官网首页地址 智谱清言智能对话平台直达官方链接

    智谱清言官网首页地址是https://chat.zhipu.ai/,该平台基于自研GLM大模型,提供通用问答、文本解读、智能写作和多语言翻译等功能,支持个人学习、办公提效和创意创作等多样化应用场景。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜…

    2026年10月25日 • 用户投稿
    100
  • 瑞达写作平台登录门户 瑞达写作App官方正版移动端

    瑞达写作平台登录门户 瑞达写作App官方正版移动端瑞达写作平台登录门户 瑞达写作App官方正版移动端瑞达写作平台登录门户 瑞达写作App官方正版移动端瑞达写作平台登录门户 瑞达写作App官方正版移动端

    瑞达写作平台登录门户是https://www.ruidawriting.com,用户可通过该网址访问官方平台并使用其核心功能进行高效创作,包括智能生成初稿、多类型论文支持、自动改稿及多样化内容生成;同时平台提供文献交叉引用、数据自动化分析与全流程辅助服务,支持移动端与网页端同步,提升写作效率与使用便…

    2026年10月25日 • 用户投稿
    000
  • 腾讯元宝AI便捷使用入口 腾讯元宝网页版高效入口

    腾讯元宝AI便捷使用入口 腾讯元宝网页版高效入口腾讯元宝AI便捷使用入口 腾讯元宝网页版高效入口腾讯元宝AI便捷使用入口 腾讯元宝网页版高效入口腾讯元宝AI便捷使用入口 腾讯元宝网页版高效入口

    腾讯元宝AI便捷使用入口为https://yuanbao.tencent.com/,支持网页端、手机App及微信小程序多平台登录,用户可通过手机号、微信或QQ账号快速登录,享受文档精读、AI对话、创作辅助与AI绘画等功能,实现跨设备数据同步。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免…

    2026年10月25日 • 用户投稿
    000
  • 蛙漫2台版官方通道 蛙漫2mawa台版阅读平台入口

    蛙漫2台版官方通道 蛙漫2mawa台版阅读平台入口蛙漫2台版官方通道 蛙漫2mawa台版阅读平台入口蛙漫2台版官方通道 蛙漫2mawa台版阅读平台入口蛙漫2台版官方通道 蛙漫2mawa台版阅读平台入口

    蛙漫2台版官方通道是https://www.wanwa2.com/,该平台资源丰富、更新快,支持多端同步与离线下载,提供流畅的阅读体验。 蛙漫2台版官方通道在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来蛙漫2mawa台版阅读平台入口,感兴趣的网友一起随小编来瞧瞧吧! https://ww…

    2026年10月25日 • 用户投稿
    300
  • 智谱清言官方网站主页链接 智谱清言AI对话平台直达官方入口

    智谱清言官方网站主页链接 智谱清言AI对话平台直达官方入口智谱清言官方网站主页链接 智谱清言AI对话平台直达官方入口智谱清言官方网站主页链接 智谱清言AI对话平台直达官方入口智谱清言官方网站主页链接 智谱清言AI对话平台直达官方入口

    智谱清言官方网站主页链接是https://chatglm.cn/,该平台基于GLM大模型提供智能对话、文本生成、代码辅助及智能体操作等功能,支持网页端和移动端使用,实现多端数据同步。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 智谱清言官…

    2026年10月25日 • 用户投稿
    100
  • ai搜题官方网页入口地址_ai搜题人工智能搜题平台直达链接

    ai搜题官方网页入口地址_ai搜题人工智能搜题平台直达链接ai搜题官方网页入口地址_ai搜题人工智能搜题平台直达链接ai搜题官方网页入口地址_ai搜题人工智能搜题平台直达链接ai搜题官方网页入口地址_ai搜题人工智能搜题平台直达链接

    ai搜题官方网页入口地址是https://souti.360.cn/,该平台提供支持文字、手写及印刷体图片识别的智能搜题功能,内置AI引擎可解析数理化公式并给出分步解答,覆盖中小学多学科内容,具备错题归集与相似题推荐能力,界面简洁响应快,适配移动端访问,依托知识图谱确保解析准确,并定期更新题库保持同…

    2026年10月25日 • 用户投稿
    200
  • Java中利用Rhino引擎评估字符串数学表达式并转换为数值类型

    Java中利用Rhino引擎评估字符串数学表达式并转换为数值类型Java中利用Rhino引擎评估字符串数学表达式并转换为数值类型Java中利用Rhino引擎评估字符串数学表达式并转换为数值类型Java中利用Rhino引擎评估字符串数学表达式并转换为数值类型

    本文旨在解决java中将包含数学运算符的字符串(如”5+5″)转换为数值类型的问题。通过引入rhino javascript引擎,我们可以将此类字符串作为javascript表达式进行安全求值,并最终将结果转换为java的`double`或`integer`类型,从而实现动态…

    2026年10月25日 • 用户投稿
    100
  • grokAI平台官方主页地址 grokAI AI助手官网直达链接入口

    grokAI平台官方主页地址 grokAI AI助手官网直达链接入口grokAI平台官方主页地址 grokAI AI助手官网直达链接入口grokAI平台官方主页地址 grokAI AI助手官网直达链接入口grokAI平台官方主页地址 grokAI AI助手官网直达链接入口

    Grok AI平台官方主页地址是https://grok.com/,用户可访问该网站点击“Try now”进入,通过邮箱注册登录后使用其对话、搜索、图像理解等功能,开发者还可申请API密钥进行技术集成。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模…

    2026年10月25日 • 用户投稿
    000
  • 蛙漫宝藏漫画网站入口分享_蛙漫发现冷门佳作必看网页版

    蛙漫宝藏漫画网站入口分享_蛙漫发现冷门佳作必看网页版蛙漫宝藏漫画网站入口分享_蛙漫发现冷门佳作必看网页版蛙漫宝藏漫画网站入口分享_蛙漫发现冷门佳作必看网页版蛙漫宝藏漫画网站入口分享_蛙漫发现冷门佳作必看网页版

    蛙漫网页版入口为https://m.wamanzhai.com/,该平台资源涵盖奇幻、悬疑等多种题材,持续更新小众佳作,分类清晰,支持高清阅读、自定义模式、离线缓存及历史同步,界面简洁流畅。 蛙漫宝藏漫画网站入口分享?这是不少网友都关注的,接下来由PHP小编为大家带来蛙漫发现冷门佳作必看网页版,感兴…

    2026年10月25日 • 用户投稿
    000
  • 如何查看Linux二进制文件 strings命令基础用法解析

    如何查看Linux二进制文件 strings命令基础用法解析如何查看Linux二进制文件 strings命令基础用法解析如何查看Linux二进制文件 strings命令基础用法解析如何查看Linux二进制文件 strings命令基础用法解析

    strings命令用于从%ignore_a_1%二进制文件中提取可打印字符串,帮助查找调试信息、路径、函数名等隐藏文本。1. 使用基本方式为“strings 文件名”,默认输出≥4字符的字符串;2. 通过“-n n”设置最小长度,如“strings -n 6 filename”找至少6字符的字符串;…

    2026年10月25日 • 用户投稿
    100
  • Laravel开发:如何使用Laravel Response返回响应?

    laravel是一款流行的php web开发框架,提供了许多有用的功能和组件,包括响应返回。在laravel中,响应返回是一个非常重要的概念,因为它控制着web应用程序向客户端提供信息的方式。在本文中,我们将详细介绍laravel响应返回的各种方式以及如何使用laravel response返回响应…

    用户投稿 2026年10月25日
    100
  • Selenium下载文件后重命名:实用教程

    Selenium下载文件后重命名:实用教程Selenium下载文件后重命名:实用教程Selenium下载文件后重命名:实用教程Selenium下载文件后重命名:实用教程

    本文详细介绍了如何在selenium自动化测试中处理文件下载后的重命名问题。由于selenium本身不直接支持下载时重命名,教程提供了一种分步解决方案:首先通过chromeoptions配置默认下载路径,然后在文件下载完成后,利用java的文件操作api对指定目录中的文件进行程序化重命名,确保文件以…

    2026年10月25日 • 用户投稿
    000
  • mysql如何设置缓存策略?缓存优化方法

    mysql缓存优化主要通过innodb缓冲池和应用层缓存实现。1. 合理配置innodb缓冲池大小(建议物理内存的50%~80%)、启用多个实例减少争用、预加载热点数据提升重启后性能;2. mysql 8.0以上使用redis或memcached做应用层缓存、手动缓存sql结果、使用物化视图减少复杂…

    2026年10月25日
    000
  • Swoole晋升为PHP企业级分布式应用的王牌

    swoole是一个快速、开源、通用的php网络通信引擎,被誉为php企业级分布式应用的王牌。它支持异步io、协程、多进程、多线程、tcp/udp、http/websocket等协议,可用于开发高并发、高性能的网络应用。 在传统的PHP编程模式中,每个请求都会启动一个独立的PHP进程,这种模式的问题在…

    2026年10月25日
    100
  • 文心一言官方下载入口_文心一言官网登录网址

    文心一言官方下载入口_文心一言官网登录网址文心一言官方下载入口_文心一言官网登录网址文心一言官方下载入口_文心一言官网登录网址文心一言官方下载入口_文心一言官网登录网址

    文心一言官网登录入口为https://yiyan.baidu.com,用户可在此访问智能对话、文案创作、代码写作等功能,支持多轮交互与上下文理解,基于百度文心大模型与飞桨平台提供AI服务。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 文心…

    2026年10月25日 • 用户投稿
    000
  • 通过PHP多线程提升计算性能_优化php多线程怎么实现的计算效率技巧

    PHP通过pthreads或parallel扩展实现多线程,推荐使用PHP 7.2+的parallel扩展,在CLI模式下将计算任务拆分为独立子任务并行执行,充分利用多核CPU提升效率,需避免共享资源竞争,合理控制线程数以减少上下文切换开销,适用于数据批处理等CPU密集型场景。 PHP本身并不原生支…

    2026年10月25日
    000
  • Selenium下载文件时如何重命名:两步实现文件自定义命名

    Selenium下载文件时如何重命名:两步实现文件自定义命名Selenium下载文件时如何重命名:两步实现文件自定义命名Selenium下载文件时如何重命名:两步实现文件自定义命名Selenium下载文件时如何重命名:两步实现文件自定义命名

    本教程将指导您如何在使用selenium进行文件下载时,克服系统默认随机命名的问题,实现文件的自定义命名。核心方法包括两步:首先通过chromeoptions配置下载目录,确保文件下载到指定位置;其次,利用java文件操作api,在文件下载完成后对其进行重命名,从而解决下载文件名称不可控的挑战。 在…

    2026年10月25日 • 用户投稿
    100
  • 智谱清言官方网站主页 智谱清言AI对话平台入口官方地址

    智谱清言官方网站主页 智谱清言AI对话平台入口官方地址智谱清言官方网站主页 智谱清言AI对话平台入口官方地址智谱清言官方网站主页 智谱清言AI对话平台入口官方地址智谱清言官方网站主页 智谱清言AI对话平台入口官方地址

    智谱清言官方网站主页是https://chatglm.cn/,用户可通过该地址访问基于GLM大模型的智能对话平台,享受多轮对话、文本生成、知识问答和个性化交互等功能,支持网页端免安装使用与移动端数据同步。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 …

    2026年10月25日 • 用户投稿
    100
  • 夸克浏览器官方直达官网地址_夸克浏览器官网链接主页入口

    夸克浏览器官方直达官网地址_夸克浏览器官网链接主页入口夸克浏览器官方直达官网地址_夸克浏览器官网链接主页入口夸克浏览器官方直达官网地址_夸克浏览器官网链接主页入口夸克浏览器官方直达官网地址_夸克浏览器官网链接主页入口

    夸克浏览器官方直达官网地址是https://www.quark.cn/,用户可通过该链接访问主页,使用AI搜索、网盘服务、多端同步等功能。 夸克浏览器官方直达官网地址在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来夸克浏览器官网链接主页入口,感兴趣的网友一起随小编来瞧瞧吧! https:/…

    2026年10月25日 • 用户投稿
    000
  • es文件浏览器官方网址主页地址__es文件浏览器官网最新下载链接

    es文件浏览器官方网址主页地址__es文件浏览器官网最新下载链接es文件浏览器官方网址主页地址__es文件浏览器官网最新下载链接es文件浏览器官方网址主页地址__es文件浏览器官网最新下载链接es文件浏览器官方网址主页地址__es文件浏览器官网最新下载链接

    es文件浏览器官方网址主页地址是http://www.estrongs.com,该网站提供官网最新下载链接,软件核心功能涵盖文件管理、压缩解压、应用管理及搜索,支持多端互联与实用界面设计。 es文件浏览器官方网址主页地址在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来es文件浏览器官网最新…

    2026年10月25日 • 用户投稿
    100

发表回复

登录后才能评论
关注微信