Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je générer un tournoi à la ronde en PHP et MySQL ?

J'ai créé une fonction roundrobin à partir de zéro car je pensais qu'il serait peut-être plus facile d'obtenir les mêmes résultats et me permettant également d'utiliser des tableaux remplis de chaînes directement au lieu de nombres.

Parce que je tire une liste de noms d'une base de données et que je l'ajoute dans un tableau, je peux maintenant programmer cela directement avec la fonction ci-dessous. Aucune étape supplémentaire n'est nécessaire pour lier les numéros aux noms, etc.

N'hésitez pas à l'essayer et si cela fonctionne, laissez un commentaire. Si quelqu'un est intéressé par celui-ci, laissez également un commentaire.

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

Comment utiliser, par exemple créer un tableau comme :

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

ou

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

puis appelez la fonction pour créer votre horaire basé sur le tableau ci-dessus :

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

Pour afficher le calendrier du tableau résultant, faites simplement comme ci-dessous ou comme vous le souhaitez :ce petit code affiche le calendrier dans un format agréable, mais utilisez-le comme bon vous semble.

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

Laissez une note si cela a fonctionné pour vous ou si vous êtes intéressé par la version bidirectionnelle avec shuffle.