PHP逻辑 - 如何处理分数关系?

时间:2012-07-02 21:56:53

标签: php logic

我正在尝试根据分数分发奖品。当谈到 TIE的时,我的逻辑有问题。在处理3人或更多人之间的关系时,有人能给我逻辑指针吗?

更新 目标就是这个 -

  1. 为绑定的人(仅限他们)制作阵列
  2. 了解这些人的位置。
  3. 我可以浏览几个示例阶段:

    示例1 - 使用0领带

    <?php
    function give_prize($a, $b) {return;}
    
    $prize = array(500, 250, 75);
    
    $user = array(
        'user1' => 650,
        'user2' => 500,
        'user3' => 200,
        'user4' => 100,
    );
    
    $prize_count = count($prize);
    
    for ($i = 0; $i < $prize_count; $i++) {
        give_prize($user[$i], $prize[$i]);
    }
    

    示例2 - 使用1 Tie(这是一个好方法吗?)

    <?php   
    for ($i = 0; $i < $prize_count; $i++) {
    
        if (isset($user[$i+1])) {
            if ($user[$i] == $user[$i++]) {
                // My Tie breaker code
            }
        }
    }
    

    但是我会在一个3或4人的领带里做些什么?如果检查,我应该遵循上述规定吗?

1 个答案:

答案 0 :(得分:6)

我首先按分数对用户进行分组,然后按降序对这些组进行排序。一旦完成,无论您有什么规则,都可以更轻松地分配奖品。

$usersByScore = array();
foreach ($user as $name => $score) {
    $usersByScore[$score][] = $name;
}
krsort($usersByScore);

例如,这会转换输入$user

$user = array(
    'user1' => 500,
    'user2' => 400,
    'user3' => 750,
    'user4' => 500,
);

进入$usersByScore

$usersByScore = array(
    750 => array('user3'),
    500 => array('user1', 'user4'),
    400 => array('user2'),
);

现在你可以随意发行奖品。