You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 05:22:52