Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用范围val组织数组_Php_Arrays_Range - Fatal编程技术网

Php 使用范围val组织数组

Php 使用范围val组织数组,php,arrays,range,Php,Arrays,Range,我正在处理一个数值数组 在PHP中,我有一个如下所示的数值数组 array('85kg' => '1', '87kg' => '3', '88kg' => '1', '90kg' => '3', '98kg' => '1') 我试图将其转换为范围,例如,在上述情况下: array('85kg-88kg' => '5', '89kg-92kg' => '3', '97kg-100kg' => '1') 射程3kg,任意键。。 我不知道如何将其转换

我正在处理一个数值数组

在PHP中,我有一个如下所示的数值数组

array('85kg' => '1', '87kg' => '3', '88kg' => '1', '90kg' => '3', '98kg' => '1')
我试图将其转换为范围,例如,在上述情况下:

array('85kg-88kg' => '5', '89kg-92kg' => '3', '97kg-100kg' => '1')
射程3kg,任意键。。
我不知道如何将其转换为范围。

您可以使用cast(
(int)
)将第一个键和最后一个键转换为整数。然后,可以从第一个关键点创建循环,直到到达最后一个关键点。在它内部,您可以循环初始数组,并检查键是否在范围内。如果是,可以将当前值附加到最终数组:

$arr = array('85kg' => '1', '87kg' => '3', '88kg' => '1', '90kg' => '3', '98kg' => '1');
$first_key = (int)key($arr); // 85
end($arr); // move to the last element to get the last key,
$last_key = (int)key($arr); // 98
$it = $first_key;
while ($it <= $last_key) { // from 85 - 98
    foreach ($arr as $key => $val) {
        $intk = (int)$key ; // 85, 87, 88, 90, 98
        if ($intk >= $it && $intk <= $it +3) { 
            $arrk = $it.'kg-'.($it+3).'kg'; // create key
            if (!isset($out[$arrk])) $out[$arrk] = 0; // create key in array
            $out[$arrk] += $val ; // append value
        }
    }
    $it += 4; // += 3 + 1 (new weight)
}
print_r($out);

对于这个问题,我只看到循环和if。您希望使用哪些规则来设置范围?有更多的规则,然后一个。在切森索regole?qualsiasi,basta che sia联合国阵列范围内。。。tipo$data['weight']['1-4']=5等。没有真正注释,但可能是一个实现。Syscall,非常好。。。我认为这是一个完美的解决方案。回答我,我给你最好的答案!
Array
(
    [85kg-88kg] => 5
    [89kg-92kg] => 3
    [97kg-100kg] => 1
)