【发布时间】:2017-02-17 20:10:34
【问题描述】:
我有这个数组。
$val = array(1, 0, 2, 1, 1);
我想从$val 数组中减去3.5,这样每个元素都不会像这样变成负数:
$val = array(0, 0, 0, 0.5, 1)
【问题讨论】:
标签: php arrays algorithm numbers
我有这个数组。
$val = array(1, 0, 2, 1, 1);
我想从$val 数组中减去3.5,这样每个元素都不会像这样变成负数:
$val = array(0, 0, 0, 0.5, 1)
【问题讨论】:
标签: php arrays algorithm numbers
迭代数组项并在循环中检查目标值是否大于循环项,从目标值中减去项值。如果循环项大于目标值,则从循环项中减去目标值。
$val = array(1, 0, 2, 1, 1);
$subtract = 3.5;
foreach ($val as $key => $item){
if ($subtract >= $item){
$subtract -= $item;
$val[$key] = 0;
} else {
$val[$key] -= $subtract;
$subtract = 0;
}
}
查看demo中的结果
【讨论】:
另一种可能的方法:将减法值减去当前迭代的值,然后将当前值设置为零或-$subtract。当$subtract 降至零以下时中断。
foreach ($val as &$number) {
$subtract -= $number;
$number = ($subtract > 0) ? 0 : -$subtract;
if ($subtract <= 0) break;
}
【讨论】: