我有两个数组,一个是值,另一个是范围:
$ranges = array(10,15,30);
$values = array(1,4,12,15,27,32);
我想计算每个范围之间的值的数量,例如:
$output = array(
"<10" => 2, // number of values < 10
"10-15" => 1, // number of values >= 10 && < 15
"15-30" => 2, // number of values >= 15 && < 30
">=30" => 1, // number of values > 30
);
显然,ranges并且values是动态的,不能硬编码if-conditions。
到目前为止我所做的工作:
$output = array();
foreach ( $values as $val ) {
foreach ( $ranges as $k => $range ) {
if ( $k == 0 ) { // first range
$max = $range;
$label = '<' . $max;
if ( $val < $max ) {
$output[$label] += 1;
}
} else if ( $k == count($ranges) - 1 ) { // last range
$min = $ranges[$k-1];
$max = $range;
$label = $min . '-' . $max;
if ( $val >= $min && $val < $max ) {
$output[$label] += 1;
}
$min = $range;
$label = '>=' . $min;
if ( $val >= $min ) {
$output[$label] += 1;
}
} else {
$min = $ranges[$k-1];
$max = $range;
$label = $min . '-' . $max;
if ( $val >= $min && $val < $max ) {
$output[$label] += 1;
}
}
}
}
print_r($output);
这似乎很昂贵,我真的不确定。有没有更简单的方法来实现我正在寻找的东西?
杨魅力
汪汪一只猫
呼啦一阵风
叮当猫咪