我有两个数字(对于这个例子,假设695是最小的,36000是最大的)。目前,一旦我知道最小值和最大值,我将差值除以10,然后循环通过循环来创建范围。它看起来像这样:
$min = (int)$min-1;
$max = (int)$max;
$diff = ($max - $min) / 10;
$range = array();
for ( $i=1; $i<10; $i++){
$range[] = array(
"low"=>($i==1? $min: ($i*$diff) + $min),
"high"=>($i+1)*$diff + $min
);
}
当数字为695-36000时,这很有用。当数字靠近时,有10个范围变得有点麻烦。例如,min为34000,max为36000,范围为34000-34200,34200-34400等。
理想情况下,如果695-36000是10个不同的范围而不是34000-36000则是一个范围。
什么是计算应显示多少范围以及这些范围应该是什么的简单方法?
答案 0 :(得分:1)
这是需要考虑的事项:
$diff = ($max - $min) / 10;
$range_max = 2000;
if($diff>$range_max) $range_size = $range_max;
else $range_size = $diff;
$creep = ($max-$min-$range_size)/9-$diff;
$range = array();
for($i=0; $i<10; $i++) {
$range[] = array (
'low' => (int)(($diff+$creep)*$i+$min),
'high' => (int)(($diff+$creep)*$i+$min+$range_size)
);
}