あなたは$にバインドされていない場合はSLEEP1、...、$ sleep4ますが$スリープのようなもの[0を使用することができます... n]は:
<?php
$threshold = 60;
$sleep = array();
$sleep[] = rand(2,18);
$sleep[] = rand(2,18);
$sleep[] = rand(2,18);
$sleep[] = rand(2,18);
if (array_sum($sleep) < $threshold) {
$sleep['padding'] = $threshold - array_sum($sleep);
}
foreach($sleep as $i=>$value) {
echo $i, ': ', $value, "\n";
}
編集:あなたは、 "スケール" の$睡眠の各値は、彼らが60(またはそれ以上)を合計するようにしたい場合:
<?php
$threshold = 60;
$sleep = array();
$sleep[] = rand(2,18);
$sleep[] = rand(2,18);
$sleep[] = rand(2,18);
$sleep[] = rand(2,18);
echo 'before: ', join(',', $sleep), '=', array_sum($sleep), "\n";
$sum = array_sum($sleep);
if ($sum < $threshold) {
$add = (int)(($threshold-$sum)/count($sleep));
$remainder = $threshold - ($sum+$add*count($sleep));
foreach($sleep as &$v) {
$v += (int)$add;
if ($remainder-- > 0) {
$v += 1;
}
}
}
echo 'after: ', join(',', $sleep), '=', array_sum($sleep), "\n";
プリント
before: 2,13,12,15=42
after: 7,18,16,19=60
before: 10,9,3,12=34
after: 17,16,9,18=60
before: 14,17,16,15=62
after: 14,17,16,15=62