PHP循环赋值数组仅保留最后一个值,如何展示全部利润数据?
解决PHP代理商月度利润数据分组展示问题
问题分析
你的代码存在两个核心问题:
- 键名拼写错误:将
month_num误写为mon_num,导致无法正确按月份分组 - 数据覆盖:直接给同月份键赋值会覆盖之前的条目,最终仅保留最后一条数据
修正方案
要保留同月份的全部利润数据,需将每个月份对应的取值改为数组,把同月份的利润条目逐个追加进去,而非直接覆盖。
修正后的代码示例(仅保留利润值)
$profitData = []; // 遍历ODBC查询返回的结果集 foreach ($queryResult as $row) { $currentMonth = $row['month_num']; // 修正键名拼写错误 // 若当前月份未初始化数组,先创建空数组 if (!isset($profitData[$currentMonth])) { $profitData[$currentMonth] = []; } // 将当前利润值追加到对应月份的数组中 $profitData[$currentMonth][] = $row['Profit']; }
若需保留完整条目(含其他字段)
如果需要保留每条数据的完整信息,而非仅Profit字段,可改为:
$profitData = []; foreach ($queryResult as $row) { $currentMonth = $row['month_num']; if (!isset($profitData[$currentMonth])) { $profitData[$currentMonth] = []; } $profitData[$currentMonth][] = $row; }
最终效果
处理后的数组结构会以month_num为键,对应的值是该月份所有利润数据的数组,所有同月份的条目都会被保留,不会出现覆盖问题。
内容的提问来源于stack exchange,提问作者korvon
相关产品推荐
相关产品推荐

