I need to allocate match officials from an array to these games
function main() {
?>
<style>
input, textarea { display: block; margin-bottom: 1em; }
label { font-weight: bold; display: block; }
</style>
<h1>Tswapong Regional Football Fixtures Generator</h1>
<?php
// Find out how many teams we want fixtures for.
if (! isset($_GET['teams']) && ! isset($_GET['names']) ) {
print get_form();
} else {
# XXX check for int
print show_fixtures( isset($_GET['teams']) ? nums(intval($_GET['teams'])) : explode("\n", trim($_GET['names'])) );
}
}
function nums($n) {
$ns = array();
for ($i = 1; $i <= $n; $i++) {
$ns[] = $i;
}
return $ns;
}
function show_fixtures($names)
{
$teams = sizeof($names);
print "<p>Fixtures for $teams teams.</p>";
// If odd number of teams add a "ghost".
$ghost = false;
if ($teams % 2 == 1) {
$teams++;
$ghost = true;
}
/////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////
$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
shuffle($input);
while($element = array_pop($input)){
//echo 'Random element:' . $element;
}
// $randomElement = $input[array_rand($input)];
// $value = $randomElement ;
//////////////////////////////////////////////////////////////////////
// Generate the fixtures using the cyclic algorithm.
$totalRounds = $teams - 1;
$matchesPerRound = $teams / 2;
$rounds = array();
for ($i = 0; $i < $totalRounds; $i++) {
$rounds[$i] = array();
}
for ($round = 0; $round < $totalRounds; $round++) {
for ($match = 0; $match < $matchesPerRound; $match++) {
$home = ($round + $match) % ($teams - 1);
$away = ($teams - 1 - $match + $round) % ($teams - 1);
// Last team stays in the same place while the others
// rotate around it.
if ($match == 0) {
$away = $teams - 1;
}
$rounds[$round][$match] = team_name($home + 1, $names)
. " vs " . team_name($away + 1, $names);
}
}
// Interleave so that home and away games are fairly evenly dispersed.
$interleaved = array();
for ($i = 0; $i < $totalRounds; $i++) {
$interleaved[$i] = array();
}
$evn = 0;
$odd = ($teams / 2);
for ($i = 0; $i < sizeof($rounds); $i++) {
if ($i % 2 == 0) {
$interleaved[$i] = $rounds[$evn++];
} else {
$interleaved[$i] = $rounds[$odd++];
}
}
$rounds = $interleaved;
// Last team can't be away for every game so flip them
// to home on odd rounds.
for ($round = 0; $round < sizeof($rounds); $round++) {
if ($round % 2 == 1) {
$rounds[$round][0] = flip($rounds[$round][0]);
}
}
$table = "<table>\n";
for ($i = 0; $i < sizeof($rounds); $i++) {
// print "<p>Week " . ($i + 1) . "</p>\n";
$table .= "<tr><th>Week #: " . ($i + 1) . "</th><th></th><th>Away</th><th>Referee</th></tr>\n";
foreach ($rounds[$i] as $r) {
//print $r "<br />";
$table .= "<tr> <td>"." "."</td> <td> $r . </td> <td>"."Team 2"."</td><td> $element </td></tr>\n";
}
}
$table .= "</table>\n";
echo $table;
print "<br />";
$table = "<table>\n";
print "<p>Second Round of the season begins</p>";
$round_counter = sizeof($rounds) + 1;
for ($i = sizeof($rounds) - 1; $i >= 0; $i--) {
print "<p>Week: # " . $round_counter." " . "Away" ."</p>\n";
// $table .= "<tr><th>Week #: ".($round_counter + . "</th><th></th><th>Away</th></tr>\n";
$round_counter += 1;
foreach ($rounds[$i] as $r) {
print flip($r) . "<br />";
//$table .= "<tr><td>". flip ($r)."<br />" ."</td></tr>\n";
}
$table .= "</table>\n";
echo $table;
print "<br />";
}
print "<br />";
if ($ghost) {
print "Matches against team " . $teams . " are byes.";
}
}
function flip($match) {
$components = explode(' vs ', $match);
return $components[1] . " vs " . $components[0];
}
function team_name($num, $names) {
$i = $num - 1;
if (sizeof($names) > $i && strlen(trim($names[$i])) > 0) {
return trim($names[$i]);
} else {
return $num;
}
}
function get_form() {
$s = '';
$s = '<p>Enter number of teams OR team names</p>' . "\n";
$s .= '<form action="' . $_SERVER['SCRIPT_NAME'] . '">' . "\n";
$s .= '<label for="teams">Number of Teams</label><input type="text" name="teams" />' . "\n";
$s .= '<input type="submit" value="Generate Fixtures" />' . "\n";
$s .= '</form>' . "\n";
$s .= '<form action="' . $_SERVER['SCRIPT_NAME'] . '">' . "\n";
$s .= '<div><strong>OR</strong></div>' . "\n";
$s .= '<label for="names">Names of Teams (one per line)</label>'
. '<textarea name="names" rows="8" cols="40"></textarea>' . "\n";
$s .= '<input type="submit" value="Generate Fixtures" />' . "\n";
$s .= "</form>\n";
// $s .= '<form action="' .$_SERVER['SCRIPT NAME'] . '">' . "\n";
// $s .= '<div><strong>AND</strong></div>' . "\n";
// $s .= '<label for="Referees">Names of officials(one per line)</label>'
// . '<textarea name="Referees" rows="8" cols="30"></textarea>' . "\n";
// $s .= "</form>\n";
return $s;