2017-02-17 24 views

回答

3

迭代陣列項目和循環檢查,如果目標值是偉大的,循環項目,從目標值中減去項目值。如果循環項目大於目標值,則從循環項目中減去目標值。

$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

1

另一個可能的方法:由所述當前迭代的值減小減法值,然後設定電流值爲零或-$subtract。當$subtract下降到零以下時打破。

foreach ($val as &$number) { 
    $subtract -= $number; 
    $number = ($subtract > 0) ? 0 : -$subtract; 
    if ($subtract <= 0) break; 
}