Php 代码中被零除的错误
此代码在“return$value*($to/$from)”行上给出了零除错误。任何人都可以调试这个 您正在将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 (
$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;
}