在代码中由零错误划分

时间:2016-05-04 08:04:55

标签: php opencart

public function convert($value, $from, $to) {
    if ($from == $to) {
        return $value;
    }

    if (isset($this->lengths[$from])) {
        $from = $this->lengths[$from]['value'];
    } else {
        $from = 0;
    }

    if (isset($this->lengths[$to])) {
        $to = $this->lengths[$to]['value'];
    } else {
        $to = 0;
    }       

    return $value * ($to / $from);
}

此代码在“return $ value *($ to / $ from)”行中给出除零错误。任何人都可以调试这个。

2 个答案:

答案 0 :(得分:2)

如何简单处理结果:

int l = sizeof(str1);
for(int i=0; i<l; i++){
    cout << str1[i];
}
cout << endl;

另一方面,传递给此方法的参数根本没有做任何事情......除了前3行:

        public function convert($value, $from, $to) {
            if ($from == $to) {
                return $value;
            }

            if (isset($this->lengths[$from])) {
                //THE RESULT OF THE EXPRESSION BELOW MAY BE NULL OR 0
                //GUARD AGAINST "DIVISION-BY-ZERO" WARNING FAR BELOW 
                //BECAUSE: $a = 0; isset($a) RETURNS TRUE...
                $from = $this->lengths[$from]['value'];
            } else {
                $from = 0;
            }

            if (isset($this->lengths[$to])) {
                $to = $this->lengths[$to]['value'];
            } else {
                $to = 0;
            }

            //HERE: AVOID WARNING/ERROR BEEPERS
            if($from != 0){
                return $value * ($to / $from);          
            }
            return "NaN - Not a Number";
        }

否则,由于您的覆盖,它们在代码中不再使用。你有没有意识到这一点?

另一个注意事项&amp;值得关注的是:可以想象$ to,$ from from&amp; $ value是数字。虽然,你个人比所有人更了解你的计划;我真诚地敢问你这个:

这类似于如何访问$ lengths数组中的数据: 的 $这 - &GT;长度[100] [ '值']

答案 1 :(得分:-1)

您将$form$to设置为0(ZERO),因此如果不满足或其中任何一个条件不满足,则会发生0 / $from$to /0或{ {1}}无论如何,你得到的错误是正确的。