【问题标题】:Calculate difference in numeric values计算数值的差异
【发布时间】:2015-04-07 17:51:51
【问题描述】:

我有两个变量:

$low = 0;
$high = 100;

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

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

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

【问题讨论】:

  • 你要设置0到100之间的值吗
  • @user3647254 问题是 $low 和 $high 计数是由用户设置的,所以我不知道它们设置为什么。例如,它可能是 $low=50 和 $high=1498...

标签: php algorithm count numeric


【解决方案1】:

如果我理解正确,您希望 $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 等。

【讨论】:

    【解决方案2】:

    阅读您的更新后,也许range 足以满足您的需求:

    $low = 0; $high = 100; $steps = 5;
    
    $value = range($low, $high, ($high-$low)/$steps);
    
    print_r($value);
    

    数组 ( [0] => 0 1 => 20 2 => 40 [3] => 60 [4] => 80 [5] => 100 )

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

    【讨论】:

    • OP 要求变量不是数组
    • 我想知道您或@raidenace 的方法在性能方面是否更好。
    【解决方案3】:

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

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

    希望对你有所帮助。

    【讨论】:

    • 问题是 $low 和 $high 计数是由用户设置的,所以我不知道它们设置为什么。例如,它可能是 $low=50 和 $high=1498... 所以设置 $step 是行不通的,对吧?
    • 其实我有点困惑,你能把$low、$high和$step的值和期望的输出贴出来
    • 对不起,我没有正确解释。例如,可以将值设置为 $low=50 和 $high=1498。这意味着我们的脚本必须通过使用这两个值来计算 $step,然后计算我们所追求的 4 个值。你明白我的意思吗?
    【解决方案4】:

    我会从 $low 中减去 $high,然后除以我想要的变量数。示例:

    $低 = 50; $高 = 1498;

    我想创建 4 个变量。

    ($high - $low) / 4 = 362

    现在我知道 $step 并且可以执行 for 循环了

    for ($low; $low =

    【讨论】:

      【解决方案5】:

      你可以使用 for 循环来创建一个数组 $low&amp;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 )
      

      【讨论】:

      • 问题是 $low 和 $high 计数是由用户设置的,所以我不知道它们设置为什么。例如,它可能是 $low=50 和 $high=1498...
      • $low, &high 和 $step 可以有任何值
      【解决方案6】:

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

      `<?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
      

      【讨论】:

        猜你喜欢
        • 2020-07-25
        • 1970-01-01
        • 1970-01-01
        • 2022-11-01
        • 2016-06-14
        • 2015-03-26
        • 2017-06-25
        • 1970-01-01
        相关资源
        最近更新 更多