PHPで数値を等分する効率的な方法を探しています。数値は常に整数になります (浮動小数点数はありません)。
「1」から「24」までの値を持つ配列 $hours ($hours['1'] など) と、整数を含む変数 $int があるとします。私が達成したいのは、 $int の値を 24 の部分に均等に分散して、対応する各配列エントリに値を割り当てることができるようにすることです。(数が奇数の場合、残りは 24 の最後または最初の値に追加されます)。
よろしく、
探しているアルゴリズムは次のとおりです。セル全体に整数N
を均等に分散します。K
for i = 0 to K
array[i] = N / K # integer division
# divide up the remainder
for i = 0 to N mod K
array[i] += 1
このコードを試してください
<?php
$num = 400;
$val = floor($num/24);
for($i=0;$i<24;$i++) {
$arr[$i] = $val;
}
$arr[0] += $num - array_sum($arr);
?>