我正在研究一组数值。
我在PHP中有以下数值的数组
array('85kg' => '1', '87kg' => '3', '88kg' => '1', '90kg' => '3', '98kg' => '1')
我正在尝试将其转换为范围,例如在上述情况下它将是:
array('85kg-88kg' => '5', '89kg-92kg' => '3', '97kg-100kg' => '1')
范围3kg任意钥匙.. 我不知道如何将其转换为范围。
答案 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
)