2011-10-07 67 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某處它零(或不定義)。在做任何分裂之前,你應該檢查分母是否爲零,並妥善處理零分的情況。