- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
好吧,我已经为这个问题苦苦思索了一段时间,谷歌搜索试图找到任何可以引导我走向正确方向的东西,但都无济于事。
所以我有一个这样的排名排行榜数组:
[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/
我即将开始一个网站 build ,一家公司想用礼物奖励新访客。礼物具有一定的货币值(value),我担心该网站被人利用。我正在寻找方法来帮助减少任何人耗尽整个礼物库存的机会。 该计划要求与 Faceb
好吧,我已经为这个问题苦苦思索了一段时间,谷歌搜索试图找到任何可以引导我走向正确方向的东西,但都无济于事。 所以我有一个这样的排名排行榜数组: [1] = array('points' => '99'
我的路由器 V6 有问题。路线未渲染。主页曾经包含所有产品,现在我看不到显示的任何产品,而且我还有指向网站每个部分的链接的代码,但没有出现。出现的错误是: react_devtools_backend
我的路由器 V6 有问题。路线未渲染。主页曾经包含所有产品,现在我看不到显示的任何产品,而且我还有指向网站每个部分的链接的代码,但没有出现。出现的错误是: react_devtools_backend
有没有办法验证奖励视频广告是否在服务器上被客户端 (OnAdRewarded) 观看?是否可以与 Google Cloud Functions 进行任何集成? 我认为可以使用 admob admin
我有一个应用程序,它有一个从网络服务返回的字典。我正在将该字典传递给另一个 View Controller 。 在这 NSDictionary *rewards=[rewardsdictionary
我按照 https://developers.google.com/admob/android/rewarded-video 上有关激励视频广告的说明进行操作并检查了谷歌广告示例代码 https://
我想在我的 android 应用程序上实现奖励视频,第一次点击显示视频时,效果很好,但在第二次或第三次点击再次显示视频时,它不起作用,并抛出日志: W/MessageQueue: Handler (c
我提供了一个测试方法, @Test public void calculateReward() throws Exception { when(userService.find
我有一个画廊应用程序,有一些类别:动物,花卉......我创建了一个 Activity 的每个画廊,所有画廊中的这个 Activity 具有相同的内容: onCreate: tSpeak = new
我正在将 Google App Invites Api 集成到我的 Android 游戏中。现在我在问自己,是否允许对发件人(邀请 friend 的人)向他发送邀请的每个 friend 进行奖励?假设
我在我的应用程序中使用 Adcolony V4VC Demp 应用程序代码。我无法将 UserId 或 UserEmail 设置为在传递给回调 URL 的任何函数中作为参数发送。谁能帮助我如何以及在何
我必须在我的 Android 应用程序中实现邀请和赢取功能。 我要做的是:用户可以将链接分享给社交媒体上的任何人,收到链接后,其他用户可以单击该链接以使用该链接安装应用程序。 用户使用该链接安装应用程
我正在尝试在本地运行 jbpm6 示例 Web 应用程序“rewards-basic”。但似乎缺少两个数据源文件。 org.hibernate.ejb.HibernatePersistenc
我一直在阅读 Browne 等人撰写的蒙特卡洛树搜索调查论文。艾尔: http://ccg.doc.gold.ac.uk/papers/browne_tciaig12_1.pdf “蒙特卡洛树搜索方法
我一直在尝试在 cocos2d 中显示奖励广告或插页式广告但没有成功。对于插页式广告,我使用以下代码 - (void)createAndLoadInterstitial { _intersti
因此,在尝试运行我的 grails 应用程序时,我不断收到主题行错误。这是我的两个域类,它们似乎是导致错误的原因。 在线订购: package rewards class OnlineOrder {
我尝试重新加载奖励视频广告,当我调用 RewardedVideoAd.instance.load(adUnitId: "xxx", targetingInfo: xyz); 我发现以下错误: W/Me
我是一名优秀的程序员,十分优秀!