使用范围val组织数组

时间:2018-04-19 21:39:05

标签: 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任意钥匙.. 我不知道如何将其转换为范围。

1 个答案:

答案 0 :(得分:1)

您可以使用强制转换((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);

输出:

Array
(
    [85kg-88kg] => 5
    [89kg-92kg] => 3
    [97kg-100kg] => 1
)