2011-10-07 82 views
0

我有这样的代码:警告:被零除在环

for ($y = 0; $y < $numRows; $y++) { 
    for ($i = 0; $i < $numRows; $i++) { 
     ${'contaH' . $i}[]=${'arrHoriz' . $i}[$y]/$arr[$y]; 
    } 
} 

echo $contaH0[0]."\n"; 

其输出:

Warning: Division by zero in C:\Users\xx\VertrigoServ\www\AHP\new\demo.php on line 66 
Warning: Division by zero in C:\Users\xx\VertrigoServ\www\AHP\new\demo.php on line 66 
Warning: Division by zero in C:\Users\xx\VertrigoServ\www\AHP\new\demo.php on line 66 
Warning: Division by zero in C:\Users\xx\VertrigoServ\www\AHP\new\demo.php on line 66 
0.300618921309 

,但如果我改变这一行:

${'contaH' . $i}[]=${'arrHoriz' . $i}[$y]/$arr[$y]; 

${'contaH' . $i}[]=${'arrHoriz' . $i}[$y]/$arr[0]; 

输出为:

0.300618921309 

什么是第一个代码警告的原因是什么?

+5

这个警告不够明显吗? – Artefact2

+1

var_dump($ arr); –

+0

@ marabutt >>>阵列(3){[0] =>串(6) “113.1”[1] =>串(5) “53.3”[2] =>串(3) “46”} – user947462

回答

3

无论是$arr没有一样多的元素,你认为它,或者它有很多的0或空元素。

+0

你是正确的。谢谢 – user947462

1

的原因是,在循环,$arr[$y]并不总是阵列中等于0某处它零(或不定义)。在做任何分裂之前,你应该检查分母是否为零,并妥善处理零分的情况。