例如:
$a=1+2-3+4-5+6
$result = 0;
for($i=1; $i<=6; $i++) {
$result += $i;
}
只是添加它。有交替运行的方法吗?
只需添加一个乘法器,该乘法器在每次迭代时都会更改其符号:
$result = 1;
$sign = 1;
for($i=2; $i<=6; $i++) {
$result += $i * $sign;
$sign *= -1;
}
注意:我还将迭代更改为以2开头,因为这两个成员都以正号开头:+1
和+2
您可以创建一个公式(使用凝视方法)并避免循环。
例如
// $a = 1 + 2 - 3 + 4 - 5 + 6;
$n = 6;
echo ceil ($n / 2) * ($n % 2 ? -1 : 1) + 2; // 5
但如果你需要其他序列
// $a = 1 - 2 + 3 - 4 + 5 - 6;
echo ceil ($n / 2) * ($n % 2 ? 1 : -1); // -3
但榜样变了。
$values = [10, 45, 6, 11, 8];
// 1
$result = 0;
reset($values);
while (key($values) !== null)
{
$result += current($values) - next($values);
next($values);
}
var_dump($result);
// 2
var_dump(
array_sum(
array_column(array_chunk($values, 2), 0)) - array_sum(array_column(array_chunk($values, 2), 1)));
// 3
var_dump(
array_reduce(array_chunk($values, 2), function ($result, $item)
{
return $result + current($item) - next($item);
}));
// 4
$result = 0;
$i = 1;
foreach ($values as $value)
{
$result += ($i++ % 2? : -1) * $value;
}
var_dump($result);