In vereinfachter Form wird ein Spielplan so erstellt:
### 1) erstelle Array ($array_teams) mit allen teilnehmenden Teams einer Liga
[...]
while($row = mysql_fetch_object($qry))
{
$i++;
$array_teams[$i] = $row->ID_team;
}
### 2) durchlaufe fortan die Schleife:
for ($round = 1; $round < $num_teams; $round++)
{
### Es wird 13 Mal die Schleife durchlaufen.
### Grund dafür ist die Anzahl (14) der Teams ($num_teams),
### die in einer Liga antreten.
### Jeder Schleifendurchlauf erstellt einen Spieltag.
...
### 2.1) erstelle Array ($teams_done)
$teams_done = array();
### 2.2) durchlaufe fortan die Schleife:
for ($team = 1; $team < $num_teams; $team++)
{
### Es werden also jedem Team,
### ausser dem Letzten (14. Team),
### eine Zählnummer gegeben.
### 2.2.1) Prüfe, ob das Team bereits abgearbeitet ist:
if (!in_array($team, $teams_done))
{
### 2.2.2) Wenn Bedingung false, dann wähle Gegner:
$opponent = $round - $team;
$opponent += ($opponent < 0) ? $num_teams : 1;
### 2.2.3) Wenn Bedingung
### (Gegner ist nicht das momentan ausgewählte Team) true,
### gehe weiter:
if ($opponent != $team)
{
### 2.2.3.1a) Wenn Bedingung true ist, gehe weiter:
if (($team + $opponent) % 2 == 0 xor $team < $opponent)
{
### Das heißt, es muss entweder der Rest der Summe
### beider Teams durch 2 dividiert 0 ergeben oder
### (exklusives Oder!) das momentan ausgewählte Team
### einen kleineren Index als der Gegner haben.
### Ist dies der Fall, wird die nun feststehende
### Paarung in die Datenbank eingetragen.
### Heimrecht hat das ausgewählte Team ($array_teams[$team]),
### auswärts spielt der gewählte Gegner ($array_teams[$opponent]).
### Es werden die eindeutigen IDs der Vereine in die Datenbank
### geschrieben, welche in Schritt 1) in das Array
### $array_teams gespeichert wurden.
}
### 2.2.3.1b) Wenn Bedingung von oben false ist, gehe weiter:
else
{
### Der Vorgang ist dem aus 2.2.3.1a) fast identisch.
### Es werden lediglich Heim- und Auswärtsteams getauscht.
### Somit bedeutet das:
### Heimrecht hat der gewählte Gegner ($array_teams[$opponent]),
### auswärts spielt das momentan ausgewählte Team ($array_teams[$team]).
}
### 2.2.4) Schreibe abgearbeitete Teams in das Array,
### welches in Schritt 2.1) erstellt wurde:
$teams_done[] = $team;
$teams_done[] = $opponent;
}
}
}
### 2.3a) Wenn Bedingung true ist, gehe weiter:
if ($round % 2 == 0)
{
### Das heißt, es muss der Rest der Rundenzahl ($round),
### welche in der Schleife aus Schritt 2) initialisiert wurde,
### durch 2 dividiert 0 ergeben.
### Ist dies der Fall, wird das letzte verbleibende Team (14.),
### welches in Schritt 2.2) ausgelassen wurde,
### noch einer Paarung zugeteilt:
$opponent = ($round + $num_teams) / 2;
### Nun werden die Paarungen, wie bereits erläutert,
### in die Datenbank geschrieben.
}
### 2.3b) Wenn Bedingung von oben false ist, gehe weiter:
else
{
$opponent = ($round + 1) / 2;
### Nun werden die Paarungen, wie bereits erläutert,
### in die Datenbank geschrieben.
### Im Unterschied zu 2.3a) wird bei 2.3b) das Heimrecht getauscht.
}
}