Laravel中如何计算集合相邻两行数据的百分比变化率
#Laravel 集合新增相邻行百分比变化率字段实现方法
核心逻辑
- 百分比变化率默认计算公式:
(当前元素value - 下一个元素value) / 下一个元素value * 100,可根据业务需求调整计算规则 - 最后一个元素无相邻下一行,
changed值固定为0 - 内置除0异常处理,避免下一行value为0时报错
实现代码
假设你的原始集合变量为$originalCollection,代码如下:
// map方法返回新集合,不修改原集合;如果需要直接修改原集合,可替换为transform方法 $result = $originalCollection->map(function ($item, $index) use ($originalCollection) { // 处理最后一行 if ($index === $originalCollection->count() - 1) { $item['changed'] = 0; return $item; } $nextValue = $originalCollection[$index + 1]['value']; // 下一行value为0时的兼容处理,可根据业务需求调整默认值 if ($nextValue == 0) { $item['changed'] = 0; return $item; } // 计算变化率,此处保留1位小数,可自行调整round方法的精度参数 $changed = round(($item['value'] - $nextValue) / $nextValue * 100, 1); $item['changed'] = $changed; return $item; });
兼容说明
如果集合内存储的是对象而非数组,将代码中所有数组取值语法$item['value']、$item['changed']替换为对象属性取值语法$item->value、$item->changed即可。
内容的提问来源于stack exchange,提问作者Hai Tien
相关产品推荐
相关产品推荐

