2012-02-25 153 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