Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak mogę wygenerować turniej okrężny w PHP i MySQL?

Stworzyłem funkcję roundrobin od podstaw, ponieważ myślałem, że łatwiej będzie uzyskać te same wyniki, a także pozwoli mi używać tablic wypełnionych łańcuchami bezpośrednio zamiast liczb.

Ponieważ wyciągam listę nazwisk z bazy danych i dodaję do tablicy, mogę teraz zaplanować to bezpośrednio za pomocą poniższej funkcji. Nie trzeba wykonywać dodatkowych czynności, aby połączyć numery z nazwiskami itp.

Wypróbuj go, a jeśli zadziała, zostaw komentarz. Mam również wersję, która pozwala na harmonogram w dwie strony (dom i powrót) i opcję losowania. Jeśli ktoś jest tym zainteresowany, zostaw również komentarz.

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

Jak używać, na przykład utworzyć tablicę, taką jak:

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

lub

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

następnie wywołaj funkcję, aby utworzyć harmonogram na podstawie powyższej tablicy:

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

Aby wyświetlić wynikowy harmonogram tablicy, po prostu wykonaj to, co poniżej lub jak chcesz:Ten mały kod wyświetla harmonogram w ładnym formacie, ale używaj go tak, jak chcesz.

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

Zostaw notatkę, jeśli Ci się udało lub jeśli interesuje Cię wersja dwukierunkowa z shuffle.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wstawianie wpisu do kolumny JSON w postgresie

  2. Ile cyfr znaczących powinienem przechowywać w swojej bazie danych dla współrzędnych GPS?

  3. Neo4j - Wybieranie danych za pomocą MATCH za pomocą Cypher

  4. Ostrzeżenie:mysql_fetch_array() oczekuje, że parametr 1 będzie zasobem [...]

  5. Jakie jest najlepsze zestawienie MySQL dla języka niemieckiego?