Php 检查一系列数字的总和是否等于设定值,必要时增加
我有一个每分钟运行一次的php脚本。该脚本运行第二个脚本,然后在给定的时间内休眠 现在时间是静止的。每次20秒 我需要的是随机分配它睡觉的时间。总时间可以超过60秒,但不能少于60秒 这就是我现在拥有的Php 检查一系列数字的总和是否等于设定值,必要时增加,php,random,Php,Random,我有一个每分钟运行一次的php脚本。该脚本运行第二个脚本,然后在给定的时间内休眠 现在时间是静止的。每次20秒 我需要的是随机分配它睡觉的时间。总时间可以超过60秒,但不能少于60秒 这就是我现在拥有的 $sleep1 = rand(2,18); $sleep2 = rand(2,18); $sleep3 = rand(2,18); $sleep4 = rand(2,18); if $sleep1 + $sleep2 + $sleep3 + $sleep4 <= 60 ? $sleep1
$sleep1 = rand(2,18);
$sleep2 = rand(2,18);
$sleep3 = rand(2,18);
$sleep4 = rand(2,18);
if $sleep1 + $sleep2 + $sleep3 + $sleep4 <= 60 ?
$sleep1=rand(2,18);
$sleep2=兰特(2,18);
$sleep3=兰特(2,18);
$sleep4=兰特(2,18);
如果$sleep1+$sleep2+$sleep3+$sleep4为什么不将该值传递给
如果您确实需要您的方法,只需使用:
如果您没有绑定到$sleep1,…,$sleep4,但可以使用类似$sleep[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";
}
有没有理由不把多余的钱加到$sleep1
上
if ( ($sleep1 + $sleep2 + $sleep3 + $sleep4) <= 60) {
$sleep1 += 61 - ($sleep1 + $sleep2 + $sleep3 + $sleep4);
}
if($sleep1+$sleep2+$sleep3+$sleep4)如果您可以拥有多于或不需要4个$sleep_uuu变量:
<?php
$time = 0;
$i = 1;
$array = array();
do {
$sleep{$i} = rand(2,18);
$array[] = $sleep{$i};
$time += $sleep{$i};
$i++;
} while ($time <= 60);
print_r($array);
echo $time;
?>
<?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
if ( ($sleep1 + $sleep2 + $sleep3 + $sleep4) <= 60) {
$sleep1 += 61 - ($sleep1 + $sleep2 + $sleep3 + $sleep4);
}
<?php
$time = 0;
$i = 1;
$array = array();
do {
$sleep{$i} = rand(2,18);
$array[] = $sleep{$i};
$time += $sleep{$i};
$i++;
} while ($time <= 60);
print_r($array);
echo $time;
?>
Array
(
[0] => 5
[1] => 2
[2] => 18
[3] => 9
[4] => 11
[5] => 10
[6] => 3
[7] => 13
)
71