Laravel应用中Division By Zero Error问题修复求助
修复关键词排名对比中的除零错误(Division By Zero Error)
原代码在计算关键词排名变化百分比时,未处理$previous_month为0的情况,导致触发Division By Zero Error。以下是修复后的完整函数代码,可直接复制替换原文件中的对应函数:
function getKeywordData($website) { if($website->lastMonthTop10Keywords) { $last_month = $website->lastMonthTop10Keywords->top3 + $website->lastMonthTop10Keywords->top4_10; $previous_month = $website->previousMonthTop10Keywords->top3 + $website->previousMonthTop10Keywords->top4_10; } else { $last_month = 0; $previous_month = 0; } $rankingData['last_month'] = $last_month; $rankingData['value'] = '0'; $rankingData['arrow'] = 'down'; $rankingData['bootstrap'] = 'danger'; if($last_month >= $previous_month) { $rankingData['arrow'] = "up"; $rankingData['bootstrap'] ="success"; $difference = $last_month - $previous_month; $percentage = 0; if($difference > 0) { // 处理往期数据为0的情况,避免除零错误 $percentage = $previous_month != 0 ? ($difference/$previous_month*100) : 100; } } else { $difference = $last_month - $previous_month; // 处理往期数据为0的情况,避免除零错误 $percentage = $previous_month != 0 ? ($difference/$previous_month*100) : -100; } $rankingData['value'] = round($percentage, 2); return $rankingData; }
关键修改说明
- 在所有执行除法运算的代码前,增加
$previous_month != 0的判断,彻底避免除零错误 - 当往期数据为0且本期有增长时,将增长百分比设为100%(符合从无到有的业务增长逻辑)
- 当往期数据为0且本期数据低于往期(业务场景中几乎不会出现,因关键词数量不可能为负),设为-100%,确保代码稳定不报错
内容的提问来源于stack exchange,提问作者Kevin Hawk
相关产品推荐
相关产品推荐

