Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 代码中被零除的错误_Php_Opencart - Fatal编程技术网

Php 代码中被零除的错误

Php 代码中被零除的错误,php,opencart,Php,Opencart,此代码在“return$value*($to/$from)”行上给出了零除错误。任何人都可以调试这个 您正在将$form和$to设置为0(零),因此,如果其中任何一个条件都不满足,则会发生0/$from或$to/0或0/0,在任何情况下,您得到的错误都是正确的。如何简单地处理结果: public function convert($value, $from, $to) { if ($from == $to) { return $value; } if (

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

您正在将
$form
$to
设置为0(零),因此,如果其中任何一个条件都不满足,则会发生
0/$from
$to/0
0/0
,在任何情况下,您得到的错误都是正确的。

如何简单地处理结果:

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);
}
另一方面,传递给此方法的参数根本不起任何作用。。。除前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";
        }
否则,由于您的重写,它们在代码中就不再有用了。你也意识到了吗

另一个需要注意和关注的问题是:$to、$from&$value可能是数字。虽然,只有你一个人比所有人都更了解你的计划;我敢诚恳地问你:


这与访问$Length数组中的数据的方式类似:
$this->length[100]['value']

也许
$from=0
与此有关
$from
是否是此错误的唯一可能候选项此函数中有什么输入?您确定$from不是0吗。我的意思是真的确定它不是零?为什么不自己用调试器调试它呢?这是我的建议。你的代码错误只是告诉你你被零除了,所以你必须构建你的代码来准备。一个简单的if语句通常可以做到这一点。这与访问$length数组中的数据的方式类似:$this->length[100]['value']吗?--是的,与你描述的问题相似。您能添加一个解决方案吗?实际上,解决方案取决于输出函数应该返回什么。而用户没有这样做,所以尝试将0替换为1,
        if ($from == $to) {
                return $value;
        }