【问题标题】:count between 2 inputted numbers (range) & display each在 2 个输入的数字(范围)之间计数并显示每个
【发布时间】:2018-04-20 20:36:57
【问题描述】:

我的尝试在下面;首先以while loop 开始创建数组,然后使用foreach 遍历每个数组,以尝试计算数组中的每个项目。

$begin = $_POST['startpoint'];
$end = $_POST['endpoint'];

$current_start = $begin;

$num1 = 3;
$num2 = 355;

while ($i = $begin; $i <= $end; ++$i) {
    $array[] = $i;
  foreach ($array as &$counted) {
    echo '<span>Star SC ' + $counted + ' mag ' + $num1 + $num2;
  }    
}

想要的输出是这样的;如果用户插入说1000280000

输出 1.) Star C 69998 mag...

输出 2.)

10002
10003
10004
10005

(一直到80000


html:

<form action="script.php" method="post">

  <input type="number" name="startpoint" min="100000" max="999998">
  <input type="number" name="endpoint" min="100001" max="999999">

  <input type="submit" name="submit" value="Go!" />

</form>

更多细节:我想数数,所以在每个用户输入的数字之间进行数学运算(即69998);并显示之间的每个数字,以上面的用户示例为例;它将是100021000310004 - 一直到80000

【问题讨论】:

  • 你只想做数学?
  • 你使用了错误的while循环,你应该使用for

标签: php foreach while-loop


【解决方案1】:

如果您只想输出每一行,您可以这样做:

$begin = 10002;
$end = 80000;

$current_start = $begin;

$num1 = 3;
$num2 = 355;

for($i = $begin; $i <= $end; $i++) {
    echo '<span>Star SC ' . $i . ' mag ' . $num1 .', '. $num2;
}

. 在 PHP 中是连接,而不是 +,你需要一个 for() 循环,而不是 while()。此外,您不需要为输出使用另一个数组。

输出是

<span>Star SC 10002 mag 3, 355
...
<span>Star SC 80000 mag 3, 355

【讨论】:

    【解决方案2】:

    我真的不明白你的意图,但对于内存友好的解决方案,你应该使用生成器函数。

    function numbers_between($n1, $n2) {
      for($n1; $n1 <= $n2; $n1++) {
        yield $n1;
      } 
    }
    $generator = numbers_between(1,5);
    
    foreach($generator as $genval){
      echo $genval."\n";
    }
    

    如果你想要总数,只需做基本的数学运算,比如

    ($num2 - $num1)+1
    

    link to working code snippet

    【讨论】:

    • 对不起,我要写意图 -)) 这是一个错字
    • gotchya,意图如何令人困惑?只有两个输出目标?
    • 不,我的意思是,你到底为什么要逐行输出数以万计的数字 -)))
    【解决方案3】:

    正确的做法是

    foreach (range($begin, $end) as $number) {
        echo $number;
    }
    

    【讨论】:

      猜你喜欢
      • 2016-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多