sql >> Database >  >> RDS >> Mysql

Hoe kan ik een round robin-toernooi genereren in PHP en MySQL?

Ik heb helemaal opnieuw een roundrobin-functie gemaakt, omdat ik dacht dat het gemakkelijker zou zijn om dezelfde resultaten te krijgen en me ook in staat zou stellen om arrays te gebruiken die rechtstreeks met strings zijn gevuld in plaats van met getallen.

Omdat ik een lijst met namen uit een database haal en aan een array toevoeg, kan ik dit nu rechtstreeks plannen met de onderstaande functie. Geen extra stap nodig om nummers aan namen etc. te koppelen.

Voel je vrij om het te proberen en als het werkt, laat dan een reactie achter. Ik heb ook een versie die een 2-weg (home &return) schema en/of shuffle-optie mogelijk maakt. Als iemand daar interesse in heeft, laat dan ook een reactie achter.

<?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;
}
?>

Hoe te gebruiken, bijvoorbeeld een array maken zoals:

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

of

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

Roep vervolgens de functie aan om uw schema te maken op basis van bovenstaande array:

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

Om het resulterende array-schema weer te geven, doe je gewoon zoals hieronder of hoe dan ook:deze kleine code geeft het schema in een mooi formaat weer, maar gebruik het hoe je maar wilt.

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

Laat een bericht achter als het voor jou heeft gewerkt of als je geïnteresseerd bent in de 2-way versie met shuffle.



  1. MySQL SELECT-functie om huidige gegevens op te tellen

  2. Een door komma's gescheiden zoeklijst maken in een Oracle SQL-instructie

  3. Een mySQL ENUM specificeren in een Django-model

  4. Waarschuwing:mysql_fetch_array() verwacht dat parameter 1 een bron is [...]