我有一个值数组,它们按相反顺序排列(从最高到最低值)。
我想为每个数组值奖励积分,使得最低值得到1分,第二低得2分,依此类推。如果两个或更多值相等,我总结所有值,就好像它们不相等一样,并将每个值作为求和值的平均值。
以下是一个例子:
Value | Points
59 | 8
56 | 7
55= | 5,5 (would get 6 if it's not a tie)
55= | 5,5 (would get 5 if it's not a tie)
54 | 4
52 | 3
46 | 2
19 | 1
我如何在PHP中执行此操作?
由于
答案 0 :(得分:0)
我不知道您希望如何存储数据或如何显示数据,但这里有一个您想要实现的示例:
$arrayPoints = array();
$array = array(59,56,55,55,55,55,54,52,52,46,19);
$numElems = count($array);
$j = $numElems;
for ($i=0; $i<$numElems; $i++)
{
$arrayPoints[$array[$i]][] = $j;
$j--;
}
$result = array();
foreach ($arrayPoints as $pointsInfoKey => $pointsInfoVal)
{
$i=0;
$totalPoints = 0;
foreach ($pointsInfoVal as $val)
{
$totalPoints += $val;
$i++;
}
if ($i!=0) $totalPoints = $totalPoints/$i;
echo "Value: $pointsInfoKey - Points: $totalPoints \n";
}
结果将是:
Value: 59 - Points: 11
Value: 56 - Points: 10
Value: 55 - Points: 7.5
Value: 54 - Points: 5
Value: 52 - Points: 3.5
Value: 46 - Points: 2
Value: 19 - Points: 1
我希望它有所帮助!
答案 1 :(得分:0)
根据关系给出所有值的平均值。 假设55个有三个肠,而对它们有5,6,7个 那么你可以为每个55提供一个点(5 + 6 + 7)/ 3