【问题标题】:Warning: Division by zero PHP check警告:除以零 PHP 检查
【发布时间】:2013-08-21 05:02:49
【问题描述】:

我正在使用 symfony 1.1 读取 API 并将值存储在 DB 中

if(($xmlArray->{'MDD'} == 0) || ($xmlArray->{'MDD'} == '0') ){  
       $autoStraObj->setRisk(' - ');
    }else{
       $autoStraObj->setRisk(round(($xmlArray->{'Pips'} / $xmlArray->{'MDD'}), 10));
    }

对于一些记录,上面的代码结果与

警告:除以零... 不确定,这就是这里的问题

【问题讨论】:

    标签: php business-logic


    【解决方案1】:

    首先检查$xmlArray->{'MDD'}是否为零。如果某些记录为零,那么它会给你这个错误。

    if(($xmlArray->{'MDD'} != 0) && ($xmlArray->{'MDD'} != ''))
    {
       $autoStraObj->setRisk(round(($xmlArray->{'Pips'} / $xmlArray->{'MDD'}), 10));
    }
    

    或者干脆

    if(!empty( $xmlArray->{'MDD'}) ) {
       $autoStraObj->setRisk(round(($xmlArray->{'Pips'} / $xmlArray->{'MDD'}), 10));
    }
    

    或者像cHao说的try like

    if (+$xmlArray->{'MDD'} != 0) {
       $autoStraObj->setRisk(round(($xmlArray->{'Pips'} / $xmlArray->{'MDD'}), 10));
    }
    

    【讨论】:

    • if(($xmlArray->{'MDD'} == 0) || ($xmlArray->{'MDD'} == '0') ){
    • 注意,如果值为字符串“0.0”,empty($xmlArray->{'MDD'}) 为 false。你最好直接说if (+$xmlArray->{'MDD'} != 0)
    • 然后他需要用int进行类型转换
    【解决方案2】:

    因为对于某些记录,$xmlArray->{'MDD'} 等于零。

    为避免这种情况 - 首先检查是否有 0 并且不除,只显示“0”。

    【讨论】:

    • 不过,这似乎正是脚本正在做的事情。
    【解决方案3】:

    请检查

    
    if(empty($xmlArray->{'MDD'})){  
           $autoStraObj->setRisk(' - ');
        }else{
           $autoStraObj->setRisk(round(($xmlArray->{'Pips'} / $xmlArray->{'MDD'}), 10));
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多