gpt4 book ai didi

PHP Reward 指向排行榜并占领带

转载 作者:搜寻专家 更新时间:2023-10-31 20:43:59 25 4
gpt4 key购买 nike

好吧,我已经为这个问题苦苦思索了一段时间,谷歌搜索试图找到任何可以引导我走向正确方向的东西,但都无济于事。

所以我有一个这样的排名排行榜数组:

[1] = array('points' => '99', 'rank' => '1');
[2] = array('points' => '90', 'rank' => '2');
[3] = array('points' => '90', 'rank' => '2');
[4] = array('points' => '80', 'rank' => '4');
[5] = array('points' => '70', 'rank' => '5');
[6] = array('points' => '70', 'rank' => '5');

然后我有一个奖励积分系统,它有一个预定义的数组来根据排名奖励积分:

[1]=10;
[2]=9;
[3]=8;
[4]=7;
[5]=6;
[6]=5;

如果不是平局,我只会匹配两个数组并根据数组键奖励积分。但是,由于我允许绑定(bind),所以我试图在所有绑定(bind)用户之间分配绑定(bind)奖励积分。因此,根据上面的引用资料,并列第二的玩家 2 和 3 将平分奖励点数 9 和 8...因此两人都将获得 8.5 分。

所以我在合并两个数组时要寻找的最终结果是:

[1] = array('points' => '99', 'rank' => '1', 'reward' => '10');
[2] = array('points' => '90', 'rank' => '2', 'reward' => '8.5');
[3] = array('points' => '90', 'rank' => '2', 'reward' => '8.5');
[4] = array('points' => '80', 'rank' => '4', 'reward' => '7');
[5] = array('points' => '70', 'rank' => '5', 'reward' => '5.5');
[6] = array('points' => '70', 'rank' => '5', 'reward' => '5.5');

排行榜可以不断变化,直到一天结束,所以我尽量不要让它太复杂。我只是想知道是否有人可以指出他们看到的可以帮助我的东西,或者他们是否有任何实现想法。

在我的尝试中,我最纠结的部分是遍历排行榜数组并不断期待“排名”相同,然后知道我需要总结和拆分的内容,同时知道我可以跳过前面的数组,而不是对我刚刚在前瞻中经历的下一个项目执行相同的测试。对不起,如果我感到困惑,但我显然很困惑。

最佳答案

这可能是您想要的:

代码

$persons = array(
array('points' => '99', 'rank' => '1'),
array('points' => '90', 'rank' => '2'),
array('points' => '90', 'rank' => '2'),
array('points' => '80', 'rank' => '4'),
array('points' => '70', 'rank' => '5'),
array('points' => '70', 'rank' => '5')
);

$ranks = array(
1 => 10,
2 => 9,
3 => 8,
4 => 7,
5 => 6,
6 => 5
);

foreach($persons as $person => $prop) {
$reward = $ranks[$prop['rank']];

if (isset($persons[$person+1])) {
if ($persons[$person+1]['rank'] == $prop['rank']) {
$reward = $reward - 0.5;
}
}

if (isset($persons[$person-1])) {
if ($persons[$person-1]['rank'] == $prop['rank']) {
$reward = $reward - 0.5;
}
}

$persons[$person]['reward'] = $reward;
}

echo '<pre>';
print_r($persons);
echo '<pre>';

此处发生的事情是您创建奖励键并根据 $ranks 数组中的索引用此人的等级填充它。这个例子并不安全。您可能想先检查该键是否存在于 $ranks 数组中。

这个例子非常“原始”,可能没有不同排名的缺陷,所以你必须自己做最后的测试。

输出

Array
(
[0] => Array
(
[points] => 99
[rank] => 1
[reward] => 10
)

[1] => Array
(
[points] => 90
[rank] => 2
[reward] => 8.5
)

[2] => Array
(
[points] => 90
[rank] => 2
[reward] => 8.5
)

[3] => Array
(
[points] => 80
[rank] => 4
[reward] => 7
)

[4] => Array
(
[points] => 70
[rank] => 5
[reward] => 5.5
)

[5] => Array
(
[points] => 70
[rank] => 5
[reward] => 5.5
)

)

关于PHP Reward 指向排行榜并占领带,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15644763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com