假设我有一个数据集,每个元素都有一个相关的"分数"。
例如:
香蕉-5
苹果-3
梨-2
我想反转比例,以便:
所有5个变成1个
所有4个变成2个
所有3个变成3个
所有2变成4
所有1变成5的
所以我最终会选择
香蕉-1
苹果-3
梨-4
我正在努力寻找一个不需要创建地图的优雅解决方案。
公式为$new = -$old + 6
。只需将其与array_map 一起使用即可
尝试:
$initial = array(
'Banana' => 5,
'Apple' => 3,
'Pear' => 2,
);
$max = max($initial);
foreach ($initial as &$val) {
$val = $max + 1 - $val;
}
print_r($initial);
只需循环所有元素,然后计算新的"分数",如下所示:
$score_new = ($score_old - 6) * (-1);
其他刻度范围的公式:
$new = $rangeMax + $rangeMin - $old