PHP Logic - How to handle score ties? -
i'm trying distribute prizes based on scores. i'm having trouble logic when comes tie's. can give me logic pointers on handling tie between 3 or more people?
update: goal --
- make array of people have tied (only them)
- know position people in.
i have few sample phases can skim through:
example 1 - works 0 ties
<?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); ($i = 0; $i < $prize_count; $i++) { give_prize($user[$i], $prize[$i]); }
example 2 - works 1 tie (is way?)
<?php ($i = 0; $i < $prize_count; $i++) { if (isset($user[$i+1])) { if ($user[$i] == $user[$i++]) { // tie breaker code } } }
but in tie of 3 or 4 people? should follow above , more if checks?
i start grouping users score , sorting groups in descending order. once complete easier assign prizes no matter rules have.
$usersbyscore = array(); foreach ($user $name => $score) { $usersbyscore[$score][] = $name; } krsort($usersbyscore);
for example, turns input $user
$user = array( 'user1' => 500, 'user2' => 400, 'user3' => 750, 'user4' => 500, );
into $usersbyscore
:
$usersbyscore = array( 750 => array('user3'), 500 => array('user1', 'user4'), 400 => array('user2'), );
now can issue prizes like.
Comments
Post a Comment