- 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/
我的 DateTime 对象使用 DateTime.Now 分配了本地时间。我想知道一旦夏令时开始/结束,这个对象是否会给出正确的当前本地时间。或者我需要解决方法吗? 最佳答案 是的,DateTime
假设我需要“特定类别中可用的项目数量”与“所有项目的数量”的比率。请考虑这样的 MySQL 表: /* mysql> select * from Item; +----+------------+--
我有这张 table http://codepen.io/MetCastle/pen/lxceL我想使用 jQuery 根据 input type="number" 隐藏/显示列。表示整个列: Pro
想要制作一个看起来像这样的网格,其中 div/section 以百分比表示。 margin 在任何地方都是一样的。 http://www.ladda-upp.se/bilder/giefekcmgwm
这将返回 1(又名 TRUE) SELECT DATE_SUB(NOW(), INTERVAL 24*100 HOUR) = DATE_SUB(NOW(), INTERVAL 100 DAY); 10
我一直在尝试在 UIScrollView 中获取 UIView 的转换后的 CGRect。如果我不放大它就可以正常工作,但是一旦我放大,新的 CGRect 就会发生变化。这是让我接近的代码: CGFl
对于家庭作业,我需要在不使用内置模 (%) 运算符的情况下返回 num1 除以 num2 后的余数。我能够通过以下代码让大多数测试通过,但我仍然坚持如何解释给定数字的 -/+ 符号。我需要保留 num
我用 Javascript 创建了一个倒数计时器;它是成功的,期望未完成。事实上,从数学上讲,它是正确的,但是谷歌浏览器的浏览器设置“暂停”(因为没有更好的术语)SetInterval/Timeout
我有两个 的,每个都设置为其容器宽度的 45%。有没有办法使 居中?使得它们在容器的左右两侧有相同的空间,并且它们之间也有空间。 一开始我只是做了每个 50% 并且有 padding: 0px 2
我是一名优秀的程序员,十分优秀!