0

此代码将分数除以数字 5。

$rows[score] 在数据库中等于 6600。

<?php
    $i = $rows[score]; //score is 6600 in the database
    while ($i >= 5) {
        echo $i = $i /2; 
        echo "<br>";
}
?>

这是我的浏览器输出的内容:

3300

1650

825

412.5

206.25

103.125

51.5625

25.78125

12.890625

6.4453125

3.22265625

我不明白为什么浏览器输出最后一个 3.22 - 如何停止循环回显小于 5 的最后一个?

4

5 回答 5

2

这里没有错,你得到的最后一个值是 from 6.4453125 / 2 = 3.22265625since6.4453125仍然大于5

于 2013-04-23T16:29:47.970 回答
0

因为6高于5?所以它又做了一个循环,使 $i 3.2 在循环停止的地方

于 2013-04-23T16:29:45.003 回答
0

如果($i<5)它不会进入循环,但在您检查之前无法知道。$i = 6.4453125最后一次检查,所以它进入循环并将其除以 2,使其小于 5,因此它不会再次进入循环并停止。

于 2013-04-23T16:30:34.773 回答
0

我找到了回答我自己问题的方法,因此页面上不会显示 3,22。

<?php
$i = $rows[score]; //score is 6600 in the database
while ($i >= 5) {
    $i = $i /2; 

    if($i >= 5) {
    echo $i;
    echo "<br>";
    }
}
?>
于 2013-04-23T16:44:59.670 回答
0

由于您在显示结果之前立即除以 2,因此您希望在 $i >= (5*2) 即 $i >= 10,而不是 5 时停止循环。

<?php
$i = $rows[score]; //score is 6600 in the database
while ($i >= 10) {
    echo $i = $i /2; 
    echo "<br>";
}
?>

这给出了:

3300
1650
825
412.5
206.25
103.125
51.5625
25.78125
12.890625
6.4453125
于 2013-04-23T17:03:23.693 回答