假设我有一个数据集,每个元素都有一个关联的“得分”。
例如:
香蕉 - 5
Apple - 3
梨 - 2
我想反转比例,以便:
所有5个成为1的
所有4都成为2的
所有3都成为3的
所有2都成为4的
所有1都变为5的
所以我最终得到了
香蕉 - 1
Apple - 3
梨 - 4
我很难找到一个不涉及创建地图的优雅解决方案。
答案 0 :(得分:3)
公式为$new = -$old + 6
。只需将其与array_map
答案 1 :(得分:1)
尝试:
$initial = array(
'Banana' => 5,
'Apple' => 3,
'Pear' => 2,
);
$max = max($initial);
foreach ($initial as &$val) {
$val = $max + 1 - $val;
}
print_r($initial);
答案 2 :(得分:0)
只需遍历所有元素,然后像这样计算新的“得分”:
$score_new = ($score_old - 6) * (-1);
答案 3 :(得分:0)
其他比例范围的公式:
$new = $rangeMax + $rangeMin - $old