查找值位于php中数组中的键之间


Find value lies between key in array in php

我在php-中有一个这样的数组

$array=array
(
    "0.00" => 1,
    "50.00" => 3,
    "75.00" => 2,
    "100.00" => 3,
    "120.00" => 1,
    "180.00" => 5,
    "200.00" => 6,
    "210.00" => 4,
    "220.00" => 2,
    "300.00" => 1,
    "500.00" => 7
);

我必须找到0-100到100-200之间的值,所以我的新数组应该是这样的-

array{
  "0-100" => 9, // total values between 0 to 100 including value of 0 and 100
  "100-200" => 15,  // total values between 100 to 200 including value of 100 and 200 
  "200-300" => 13,  // same way
  "300-500" => 8  //same way
} 

如何制作此阵列。?

注意,使用ARRAY_FILTER_USE_KEY需要PHP>=5.6.0

$array=[
    "0.00" => 1,
    "50.00" => 3,
    "75.00" => 2,
    "100.00" => 3,
    "120.00" => 1,
    "180.00" => 5,
    "200.00" => 6,
    "210.00" => 4,
    "220.00" => 2,
    "300.00" => 1,
    "500.00" => 7
];
function filtered($array, $min, $max) {
    return array_sum(
        array_filter(
            $array,
            function($key) use ($min, $max) {
                return (($key >= $min) && ($key <= $max));
            },
            ARRAY_FILTER_USE_KEY
        )
    );
}
$newArray = [
    '0-100' => filtered($array, 0, 100),
    '100-200' => filtered($array, 100, 200),
    '200-300' => filtered($array, 200, 300),
    '300-400' => filtered($array, 300, 400),
];
var_dump($newArray);

编辑

如果你不使用PHP>=5.6.0,那么你可以使用

function filtered($array, $min, $max) {
    return array_sum(
        array_intersect_key(
            $array,
            array_flip(
                array_filter(
                    array_keys($array),
                    function($key) use ($min, $max) {
                        return (($key >= $min) && ($key <= $max));
                    }
                )
            )
        )
    );
}