Mysql
 sql >> база данни >  >> RDS >> Mysql

Как мога да генерирам кръгов турнир в PHP и MySQL?

Създадох кръгова функция от нулата, тъй като мислех, че може да е по-лесно да получа същите резултати и също така ми позволява да използвам масиви, пълни с низове директно вместо числа.

Тъй като изтеглям списък с имена от база данни и добавям в масив, сега мога да планирам това директно с функцията по-долу. Не е необходима допълнителна стъпка за свързване на номера с имена и т.н.

Моля, не се колебайте да го опитате и ако работи, оставете коментар. Имам и версия, която позволява двупосочен график (вкъщи и връщане) и/или опция за разбъркване. Ако някой се интересува от това, оставете и коментар.

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

Как да използвате, например, създайте масив като:

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

или

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

след това извикайте функцията, за да създадете своя график въз основа на горния масив:

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

За да покажете графика на получения масив, просто направете както е по-долу или както искате:Този малък код показва графика в приятен формат, но го използвайте както искате.

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

Оставете бележка, ако е работило за вас или ако се интересувате от двупосочната версия с разбъркване.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да вмъкна много редове в MySQL таблица и да върна новите идентификатори?

  2. Как показват, че многоизмерните масиви се вмъкват в MySQL таблица?

  3. Вмъкване на елементи в падащото меню за стартиране от SQL таблица

  4. Актуализирайте ред, но вмъкнете, ако редът не съществува в codeigniter

  5. Вмъкване в същата таблица, задействане на mysql