sql >> Database teknologi >  >> RDS >> Mysql

Hvordan kan jeg generere en round robin-turnering i PHP og MySQL?

Jeg oprettede en roundrobin-funktion fra bunden, da jeg tænkte, at det kunne være nemmere at få de samme resultater og også tillod mig at bruge arrays fyldt med strenge direkte i stedet for tal.

Fordi jeg trækker en liste over navne fra en database og tilføjer til et array, kan jeg nu planlægge dette direkte med funktionen nedenfor. Intet ekstra trin er nødvendigt for at knytte numre til navne osv.

Du er velkommen til at prøve det, og hvis det virker, så efterlad en kommentar. Jeg har også en version, der giver mulighed for 2-vejs (hjem og retur) tidsplan og eller blande mulighed. Hvis nogen er interesseret i den, så skriv også en 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;
}
?>

Sådan bruger du, for eksempel oprette et array som:

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

eller

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

kald derefter funktionen for at oprette din tidsplan baseret på ovenstående array:

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

For at vise det resulterende array-skema skal du blot gøre som nedenfor eller som du vil:Denne lille kode viser tidsplanen i et flot format, men brug det som du vil.

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

Efterlad en note, hvis det virkede for dig, eller hvis du er interesseret i 2-vejs versionen med shuffle.



  1. mysqli_num_rows virker ikke korrekt

  2. Ti tips til, hvordan du opnår MySQL- og MariaDB-sikkerhed

  3. Sådan fungerer MID()-funktionen i MySQL

  4. Sådan læser du sql-forespørgsel til pandas dataframe / python / django