【发布时间】:2019-12-31 12:14:49
【问题描述】:
我有两个数组,一个是值,另一个是范围:
$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);
这似乎很昂贵,我真的不确定。 有没有更简单的方法来实现我的目标?
【问题讨论】: