在2个输入数字(范围)和2之间计数显示每个

时间:2018-04-20 20:36:57

标签: php foreach while-loop

我的尝试在下面;首先以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。)明星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

3 个答案:

答案 0 :(得分:3)

如果您想要做的就是输出每一行,您可以这样做:

$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

答案 1 :(得分: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

答案 2 :(得分:0)

正确的方法是

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