PHP循环的多个值

时间:2016-10-20 11:33:35

标签: php for-loop

我有以下php for loop

$screen = 1.3; // it can be other decimal value
    for ($i = 1, $k = 0; $i <= $screen; $i += 0.1, $k+=25) {
    echo $i . ' - ' . $k . '<br>';
}

它工作正常,但我想运行for循环直到1.3 - 75现在它打印我1.2 - 50.我尝试将$ i&lt; = $屏幕更改为$ i = $ screen但它不起作用。

3 个答案:

答案 0 :(得分:5)

如果您阅读http://php.net/manual/en/language.types.float.php,那么您应该记住一个很好的陈述:

  

测试浮点值的相等性是有问题的,因为它们在内部表示的方式

     

要测试浮点值是否相等,使用由于舍入引起的相对误差的上限。此值称为机器epsilon或单位舍入,是计算中可接受的最小差异。

根据建议,您需要执行以下操作:

<?php
$screen = 1.3; // it can be other decimal value
$epsilon=0.0001;
for ($i = 1, $k = 0; $i <= $screen+$epsilon; $i += 0.1, $k+=25) {
    echo $i . ' - ' . $k . "\n";
}

答案 1 :(得分:2)

两种解决方案:

$screen = 1.4; // it can be other decimal value
    for ($i = 1, $k = 0; $i <= $screen; $i += 0.1, $k+=25) {
    echo $i . ' - ' . $k . '<br>';
}

OR:

$screen = 1.3; // it can be other decimal value
    for ($i = 1, $k = 0; $i <= $screen+0.1; $i += 0.1, $k+=25) {
    echo $i . ' - ' . $k . '<br>';
}

测试。两者都有效...到目前为止我已经明白你想做什么了。

两者的测试输出:

1 - 0
1.1 - 25
1.2 - 50
1.3 - 75

答案 2 :(得分:0)

你得到了答案,这是实现同样目标的另一种方式,如下所示。 Source

$start = 1;
$end = 1.3;
$place = 1;

$step = 1 / pow(10, $place);

for($i = $start, $k=0; $i <= $end; $i = round($i + $step, $place), $k += 25)
{
    echo $i . ' - ' . $k . '<br>';
}