计算数值的差异

时间:2015-02-07 17:35:34

标签: php algorithm count numeric

我有两个变量:

$low = 0;
$high = 100;

使用这两个变量,我想设置4个新变量,从低值开始到高位。所以在这种情况下,它将是:

$low = 0;
$value_1 = 20;
$value_2 = 40;
$value_3 = 60;
$value_4 = 80;
$high = 100;

我可以做些什么计算来实现这个目标?设置$low$high值只是为了帮助解释我的问题。这两个值由用户设置。

6 个答案:

答案 0 :(得分:2)

如果我理解正确,你希望$ low和$ high之间的距离在四个值之间平均分配。

我认为该算法在下面的代码中非常自我​​解释......

<?php
$low = 0; //substitute user entry
$high = 100; //substitute user entry
$difference = $high - $low;
$increment = $difference/5; 
//we use 5 because we need four divisible values, you can change this
//based on how many incremental values you want.
$step = $low;
echo $low."<br>";
for($x=0;$x<4;$x++)
{
  $step+=$increment;
  echo $step."<br>";
}
echo $high."<br>";
?>

对于$low = 0, $high = 100 - 这将打印:

0
20
40
60
80
100

对于$low = 57, $high = 94 - 这将打印:

57
64.4
71.8
79.2
86.6
94

对于$low =222, $high = 1000 - 这将打印:

222
377.6
533.2
688.8
844.4
1000

您可以根据需要round()。另外,请确保对$ low和$ high进行基本验证,例如,$ low实际上小于$ high等。

答案 1 :(得分:1)

阅读完更新后,range可能足以满足您的需求:

$low = 0; $high = 100; $steps = 5;

$value = range($low, $high, ($high-$low)/$steps);

print_r($value);
  

阵   (       [0] =&gt; 0       1 =&gt; 20       2 =&gt; 40       [3] =&gt; 60       [4] =&gt; 80       [5] =&gt; 100   )

See test at eval.in链接即将过期

答案 2 :(得分:0)

只需运行一个循环并创建一个变量。使用以下代码

<?php
$low = 0;
$high = 100;
$step = 20;

$f = 0;
for($i=$low; $i<=$high; $i+=$step){
  ${"variable_$f"} = $i;
$f++;
}
echo $variable_1;

希望这会对你有所帮助。

答案 3 :(得分:0)

您可以使用for循环来制作数组 $low&high$step可以有任何价值

$low = 0;        
$high = 100;

$step = 20;

$var = array();

for($x = 0; $x < $high/$step; $x++) {
     if($x == $low || $x == $high) {
         continue;
     } else {
         $var[$x] = $x * $step;
     }
 }

数组看起来像

Array ( [1] => 20 [2] => 40 [3] => 60 [4] => 80 )

答案 4 :(得分:0)

我会从$ low中减去$ high,然后根据我想要的变量数量来划分。例如:

$ low = 50; $ high = 1498;

我想创建4个变量。

($ high - $ low)/ 4 = 362

现在我知道$ step,我可以进行for循环

for($ low; $ low =&lt; $ high; $ low + $ step){}

答案 5 :(得分:0)

你可以像这样简单而具体地编写代码:

`<?php`
        $low = 0;
        $high = 100;
        $stepInc = 20;
        $i ;
        for ($i=$low; $i <= $high ; $i+=$stepInc) { 
            echo $i . "<br>";
        }
?>

and the out will be:

0
20
40
60
80
100