我给出的评级值为1.0到6.0。这里1.0是最好的,6.0是最坏的评级。我必须转换这样的评级。 如果1.0是给定的评级值,我将必须显示5.0 和IF 6.0是给定的评级值,我必须显示1.0 因此,如果3.0是给定的评级值,我将必须显示2.5,依此类推。我正在从外部网站获取此1到6的评级。需要将其转换为1到5到我的网站。
答案 0 :(得分:1)
这更多是关于数学而不是关于php。
所以让我们看看,首先我们需要扭转价值观。因为我们希望分别在评级的哪一端变得最差和最好。
$reverseRating = 7.0 - $inputRating;
这会将1.0
转换为6.0
和6.0
转换为1.0
等。
现在剩下要做的就是将值从6星(输入范围:6 - 1 = 5.0
)缩小为5星(输出范围:5 - 1 = 4.0
)。为此,我们将所有内容降低到0,缩小它,然后将其移回1。
$outputRating = ($reverseRating - 1.0) / 5.0 * 4.0 + 1.0;
写成紧凑的单行,这导致
$outputRating = (6.0 - $inputRating) * 0.8 + 1.0;
注意强>
输入3.0
导致2.5
的结论是错误的。
由于最低值为1而非0,因此输入评级量表上的中心值不 3, 3.5 :
6 5 4 (3.5) 3 2 1
输出中心值相同,不 2.5, 3 :
1 2 3 4 5
输入上的 3.0
实际上比中心略好,并且会在输出时映射到3.4
。