按范围值分组数组

时间:2017-09-04 18:17:20

标签: php arrays laravel-5

我有这个数组[1,1,2,2,2,3,4,5,5,6,6,7,7],我可以根据范围值对数组进行分组,所以得到最后的数据结果:

'1-3' = [1,1,2,2,2,3]; // Count is 6 '4-5' = [4,4,5]; // Count is 3 '6-7' = [6,6,6,7]; // Count is 4

3 个答案:

答案 0 :(得分:0)

使用范围创建一个新数组,然后迭代值和内部范围。如果当前值在范围内,请将记录添加到当前范围:

function functionThatCanFail
{
    [CmdletBinding()]
    param
    (
        $Param1
    )

    #Do stuff
}

try
{
    functionThatCanFail -ErrorAction Stop
}
catch
{
    #Error case
}

Demo

答案 1 :(得分:0)

我相信你需要的是:

function array_get_range($array, $min, $max) {
    return array_filter($array, function($element) use ($min, $max) {
       return $element >= $min && $element <= $max; 
    });
}

$array = [1,1,2,2,2,3,4,4,5,6,6,6,7];

$range13 = array_get_range($array, 1, 3); // [1, 1, 2, 2, 2, 3]
$range45 = array_get_range($array, 4, 5); // [4, 4, 5]
$range67 = array_get_range($array, 6, 7); // [6, 6, 6, 7]

答案 2 :(得分:0)

我认为array_intersect()range()sizeof()/count()为此任务做了更清晰的工作。它消除了双重条件。

代码:(Demo

function count_range($array,$min,$max){
    return sizeof(array_intersect($array,range($min,$max)));
}

$array = [1,1,2,2,2,3,4,4,5,6,6,6,7];

echo count_range($array,1,3);  // 6 from [1,1,2,2,2,3]
echo count_range($array,4,4);  // 2 from [4,4]
echo count_range($array,2,7);  // 11 from [2,2,2,3,4,4,5,6,6,6,7]