无法使用 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++;
}
我正在做一个项目,我正在准备一个大数组集来创建一个函数,将值一个一个地保存到数据库中。
所以我创建了一个循环来生成我需要的纯文本格式的数组
$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
函数是多余的,您不需要只为进行微不足道的添加而使用包装器。没有函数调用的不必要开销,您可以编写与
$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++;
}