各ゲームの上位 2 つの「スコア」を勝者としてマークするゲームを作成しています。
2 つのスコアが同じ場合、タイブレークが必要になります (2 つの一致するスコアが 1 位と 2 位でない場合)。
次の可能性についてこれらの結果を返す関数を(効率的に)作成するにはどうすればよいですか。
6 つの異なるゲームで考えられるゲーム結果:
$a = array(20,19,18,17,16,15); // no tie breaker needed - [1], [2] win
$b = array(20,20,18,17,16,15); // no tie breaker needed - [1], [2] win
$c = array(20,19,19,17,16,15); // tie breaker needed for [2], [3] values
$d = array(20,20,20,17,16,15); // tie breaker needed for [1], [2], [3] values
$e = array(20,19,19,19,16,15); // tie breaker needed for [2], [3], [4] values
$f = array(20,20,20,20,20,20); // tie breaker needed for all values
編集:解決策:
<?php
$score = array("green"=>10, "pink"=>10, "orange"=>9, "blue"=>8, "yellow"=>7);
$count = 0;
foreach ($score as $value) {
$count++;
// if the count is 2
if ($count === 2) {
// save the value as a variable
$second = $value;
// if the count is 3
} else if ($count === 3) {
// if 2nd place and 3rd place have the same score - tiebreaker
if ($second === $value) {
// add matches to array for tiebreaker
$result = array_keys($score, $value);
// if 2nd place and 3rd place have different scores - no tiebreaker
} else {
// split first 2 places from the array
$result = array_slice($score, 0, 2);
}
}
}
?>