我想使用PHP从数组中使用范围库计数数据。 这是我的数组
$array = array(
1.1, 2.2, 3.2, 4.5, 4.2,
5.4, 6.2, 7.1, 8, 9.4, 10,
1.7);
我的预期输出就像(我手动设置的范围数量,我只想计算包含我的角色的数据量):
1.00 - 2.50 : 3 data
2.51 - 3.50 : 0 data
3.51 - 4.00 : 1 data
我尝试这样写但它仍然无法正常工作
$start = 1;
$end = 2.5;
$int = 0;
foreach ($array as $key => $value) {
if ($start>=$value && $end<=$value) {
$int++;
}
}
echo $int;
请帮我解决这个简单的案例。非常感谢
答案 0 :(得分:1)
您必须设置range
,因为它是一致的值。您可以使用array_reduce
和array_filter
来汇总数据。
$array = array(1.1, 2.2, 3.2, 4.5, 4.2,5.4, 6.2, 7.1, 8, 9.4, 10,1.7);
$range = array("1.00-2.50","2.51-3.50","3.51-4.00");
$grouped = array_reduce($range, function($c,$v) use($array) {
$group = array_filter($array,function($x) use ($v){
$t = explode("-",$v);
return $x >= $t[0] && $x <= $t[1];
});
$c[ $v ] = count( $group );
return $c;
},array());
echo "<pre>";
print_r( $grouped );
echo "</pre>";
这将导致:
Array
(
[1.00-2.50] => 3
[2.51-3.50] => 1
[3.51-4.00] => 0
)
答案 1 :(得分:0)
如果我没有误解你的问题那么这对你有用。
$array = array(
1.1, 2.2, 3.2, 4.5, 4.2,
5.4, 6.2, 7.1, 8, 9.4, 10,
1.7);
$count = [];
foreach ($array as $key => $value) {
if ($value<ceil($value)) {
$count[floor($value)."-".ceil($value)]++;
}
}
print '<pre>';
print_r($count);
print '</pre>';
<强>输出:强>
Array
(
[1-2] => 2
[2-3] => 1
[3-4] => 1
[4-5] => 2
[5-6] => 1
[6-7] => 1
[7-8] => 1
[9-10]=> 1
)
参见演示: https://eval.in/973669