2012-02-25 154 views
0

我不確定我錯過了什麼,但我無法正確輸出$c函數返回:PHP

<?php 

function pythThm($a, $b){ 
    $a2 = pow($a, 2); 
    $b2 = pow($b, 2); 
    $c = sqrt($a2 + $b2); 
    if(is_int($c)){return $c;} 
} 

echo pythThm(3, 4); 
//outputs nothing, should be 5 

?> 

對於初學者問題,我表示歉意。

問題的解決方案:

<?php 
function pythThm($a, $b){ 
$a2 = pow($a, 2); 
$b2 = pow($b, 2); 
$c = sqrt($a2 + $b2); 
if($c - round($c) == 0){return $c;} 
} 

echo pythThm(4, 4); 
//returns nothing 
echo pythThm(3,4); 
//returns 5 
?> 

感謝所有誰回答...我會請務必閱讀關於函數在下一次全面的信息!

回答

1

sqrt返回一個float,這不是int,所以你的函數什麼都不返回。只要離開is_int支票?

+0

hmm..I需要。不過,我認爲一個簡單的'if($ c - round($ c)== 0)'就可以做到這一點。謝謝! – 2012-02-25 06:10:21

3

sqrt總是返回一個浮點數。你的if語句總是錯誤的。

如果你想要做的檢查,這樣做:

$i = (int) $c; 

if($c == $i) return $c 

這樣做是投浮子爲int,如果浮動$c和INT $i是相等的,那麼它將返回

0

也就是說錯字在結果

function pythThm($a, $b){ 
    $a2 = pow($a, 2); 
    $b2 = pow($b, 2); 
    $c = sqrt($a2 + $b2); 
    return (int)$c; 
} 

echo pythThm(3, 4); 
0
<?php 

function pythThm($a, $b){ 
    $a2 = pow($a, 2); 
    $b2 = pow($b, 2); 
    $c = sqrt($a2 + $b2); 
    return $c; 
} 

echo pythThm(3, 4); 
//outputs nothing, should be 5 

?> 
+0

這將返回所有的值作爲整數...不管它們是整數還是不整數。 – 2012-02-25 06:12:56

+1

沒有必要對'is_int()'進行檢查,因爲將'$ c'強制轉換爲int ... – 2012-02-25 06:13:01

1

sqrt返回float,這就是爲什麼is_int始終爲假。

如果你真的要檢查它是否是一個整數,你可以使用:只有`$ C`那些對這個問題的整數

if ((int)$c == $c) 
    return $c; 
+0

是的,我在看到第一條評論後想到了類似的檢查。謝啦! – 2012-02-25 06:22:34