Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich ein Round-Robin-Turnier in PHP und MySQL generieren?

Ich habe eine Roundrobin-Funktion von Grund auf neu erstellt, da ich dachte, dass es einfacher sein könnte, die gleichen Ergebnisse zu erzielen, und es mir auch ermöglicht, Arrays zu verwenden, die direkt mit Zeichenfolgen anstelle von Zahlen gefüllt sind.

Da ich eine Liste mit Namen aus einer Datenbank ziehe und in ein Array einfüge, kann ich dies jetzt direkt mit der folgenden Funktion planen. Es ist kein zusätzlicher Schritt erforderlich, um Nummern mit Namen usw. zu verknüpfen.

Bitte zögern Sie nicht, es auszuprobieren, und wenn es funktioniert, hinterlassen Sie einen Kommentar. Ich habe auch eine Version, die einen 2-Wege-Zeitplan (Hin- und Rückfahrt) und/oder die Option „Shuffle“ ermöglicht. Wenn jemand daran interessiert ist, dann hinterlasst auch einen Kommentar.

<?php

/**
 * @author D.D.M. van Zelst
 * @copyright 2012
 */

function scheduler($teams){
    if (count($teams)%2 != 0){
        array_push($teams,"bye");
    }
    $away = array_splice($teams,(count($teams)/2));
    $home = $teams;
    for ($i=0; $i < count($home)+count($away)-1; $i++){
        for ($j=0; $j<count($home); $j++){
            $round[$i][$j]["Home"]=$home[$j];
            $round[$i][$j]["Away"]=$away[$j];
        }
        if(count($home)+count($away)-1 > 2){
            array_unshift($away,array_shift(array_splice($home,1,1)));
            array_push($home,array_pop($away));
        }
    }
    return $round;
}
?>

Wie zu verwenden, erstellen Sie zum Beispiel ein Array wie:

<?php $members = array(1,2,3,4); ?>

oder

<?php $members = array("name1","name2","name3","name4"); ?>

Rufen Sie dann die Funktion auf, um Ihren Zeitplan basierend auf dem obigen Array zu erstellen:

<?php $schedule = scheduler($members); ?>

Um den resultierenden Array-Zeitplan anzuzeigen, machen Sie einfach wie unten oder wie auch immer Sie möchten:Dieser kleine Code zeigt den Zeitplan in einem netten Format an, aber verwenden Sie ihn wie Sie wollen.

<?php
foreach($schedule AS $round => $games){
    echo "Round: ".($round+1)."<BR>";
    foreach($games AS $play){
        echo $play["Home"]." - ".$play["Away"]."<BR>";
    }
    echo "<BR>";
}
?>

Hinterlassen Sie eine Nachricht, wenn es für Sie funktioniert hat oder wenn Sie an der 2-Wege-Version mit Shuffle interessiert sind.