无法使用 while 循环求和并获得相同的值 php

Unable to do sum and getting same value by using while loop php

我正在做一个项目,我正在准备一个大数组集来创建一个函数,将值一个一个地保存到数据库中。

所以我创建了一个循环来生成我需要的纯文本格式的数组

$i = 1;
while( $i <= 65 ) {
  $startVal = $this->summe(35501, 500);
  $endVal = $this->summe(36000, 500);
  $amount = $this->summe(3575, 50);
  echo "array(<br>";
    echo "'low'     => '".$startVal."',<br>";
    echo "'high'    => '".$endVal."',<br>";
    echo "'amount'  => '".$amount."',<br>";
    echo '\'city\'    => $city<br>';
  echo "),<br>";
  $i++;
}

但有一个小问题,每当我 运行 代码时,每次循环 return 相同的值:

array(
'low' => '36001',
'high' => '36500',
'amount' => '3625',
'city' => $city
),
array(
'low' => '36001',
'high' => '36500',
'amount' => '3625',
'city' => $city
),
array(
'low' => '36001',
'high' => '36500',
'amount' => '3625',
'city' => $city
),
array(
'low' => '36001',
'high' => '36500',
'amount' => '3625',
'city' => $city
),

但我需要生成如下格式的输出:

array(
'low' => '36001', 
'high' => '36500',
'amount' => '3625',
'city' => $city
),
array(
'low' => '36501', // Adding 500
'high' => '37000', // Adding 500
'amount' => '3675', // Adding 50
'city' => $city
),
array(
'low' => '37001', // Adding 500
'high' => '37500', // Adding 500
'amount' => '3725', // Adding 50
'city' => $city
),
array(
'low' => '37501', // Adding 500
'high' => '38000', // Adding 500
'amount' => '3775', // Adding 50
'city' => $city
),

您每次都将相同的硬编码值提供给 summe 函数,因此每次得到相同的结果也就不足为奇了。 (我假设该函数只是将两个数字加在一起,尽管您没有显示它的代码。)

如果你希望它每次都递增,那么你需要记录上一次循环返回的值,并使用它来代替。像这样:

$i = 1;
$startVal = 35501;
$endVal = 36000;
$amount = 3575;

while( $i <= 65 ) {
  $startVal = $this->summe($startVal, 500);
  $endVal = $this->summe($endVal, 500);
  $amount = $this->summe($amount, 50);
  echo "array(<br>";
    echo "'low'     => '".$startVal."',<br>";
    echo "'high'    => '".$endVal."',<br>";
    echo "'amount'  => '".$amount."',<br>";
    echo '\'city\'    => $city<br>';
  echo "),<br>";
  $i++;
}

演示:http://sandbox.onlinephpfunctions.com/code/e8bcca803d8cac56b85d5ac7841d18250aca11e3

此外,summe 函数是多余的,您不需要只为进行微不足道的添加而使用包装器。没有函数调用的不必要开销,您可以编写与

相同的 3 行
$startVal += 500;
$endVal += 500;
$amount += 50;

相反。


P.S。顺便说一句,您似乎正在尝试使用 PHP 生成类似于 print_r() 生成的字符串输出 - 或者更像是 var_export()。目前尚不清楚您为什么要这样做而不是直接使用其中一个调试功能,或者(如果调试不是 objective)输出为可识别的、标准的、可解析的格式,例如 JSON或 XML.

现在我得到了答案,感谢@ADyson,非常感谢

Here are the updated working code:

$i = 1;
$var_startVal = 500;
$var_endVal = 500;
$var_amount = 50;

while( $i <= 65 ) {
  $var_startVal += 500;
  $var_endVal += 500;
  $var_amount += 50;

  $startVal = 35501, $var_startVal;
  $endVal = 36000, $var_endVal;
  $amount = 3575, $var_amount;
  echo "array(<br>";
    echo "'low'     => '".$startVal."',<br>";
    echo "'high'    => '".$endVal."',<br>";
    echo "'amount'  => '".$amount."',<br>";
    echo '\'city\'    => $city<br>';
  echo "),<br>";
  $i++;
}