我正在编写一个代码来解决问题。我的一些功能无法正常工作。
function check_factor($sqr,$num)
{
for($i = $sqr ; true ; $i++)
{
$n = pow($sqr,2) - $num;
$s = sqrt($n);
if(is_int($s))
{
return $i;
}
}
}
我知道$ s是一个“双”,但即使我将循环计数器限制为2,我也会得到一个无限循环。 我在这里错过了什么?为什么函数不会简单地返回null?为什么即使有2次迭代我也会得到无限循环?
答案 0 :(得分:1)
根据手册:PHP函数sqrt()
始终返回float
而不是integer
。
答案 1 :(得分:1)
true使它成为无限循环
你总会得到一个无限循环因为 sqrt()返回浮动意味着
$s = sqrt($n);

$ s 现在是浮动
并且您的测试正在测试 $ s 是整数,所以即使在 $ i = 2 循环之后它也将是一个无限循环每次循环都会卡住$ i = 2但是 如果您将代码更改为此
<?php
function check_factor($sqr,$num)
{
echo "<br>";
for($i = 1 ; $i < 3 ; $i++)
{
echo " in the loop $i<br>";
$n = pow($sqr,2) - $num;
echo "$n<br>";
$s = sqrt($n);
echo "$s<br>";
if(is_int($s))
{
echo "in the if <br>";
return $i;
}
}
return 0;
}
$val=0;
$val = check_factor(5,2);
echo "<br>$val<br>";
?>
&#13;
输出应该是这样的
in the loop 1
23
4.7958315233127
in the loop 2
23
4.7958315233127
0
&#13;
就是这样。我希望我帮忙。