1 回答

TA貢獻1878條經驗 獲得超4個贊
此代碼使用while()循環創建工作天數的輸出數組。它用于$current跟蹤每個項目以及剩余的分配量。它還用于$dailyLeft跟蹤特定日期剩余的容量。它會檢查兩者,如果當前小于剩余的每日容量,則會為該項目分配一整天并重置每日容量。如果當天有額外容量,則會將此項目分配給該天并獲取下一個項目。
$day++僅當當天的容量已滿時,該天才會增加(使用)...
$max = 1700;
$dailyLeft = $max;
$current = reset($priorityArraySum);
$output = [];
$day = 1;
while (true) {
// echo $current."/".$dailyLeft."=".$day.PHP_EOL;
if ( $current >= $dailyLeft ) {
$output[] = ["priority" => key($priorityArraySum),
"amount" => $dailyLeft,
"day" => $day++
];
$current -= $dailyLeft;
$dailyLeft = $max;
}
else {
$output[] = ["priority" => key($priorityArraySum),
"amount" => $current,
"day" => $day
];
$dailyLeft -= $current;
if ( ($current = next($priorityArraySum)) === false ) {
break;
}
}
}
print_r($output);
- 1 回答
- 0 關注
- 100 瀏覽
添加回答
舉報