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;

    Here; I put the `​``code quotes``` around your code so that it wasn't so ugly.

    Now: what have you tried and what is the problem you're having?
    I mean, obviously $rounds[$round][$match] should have been an array with the two team names ($rounds[$round][$match]['home'], $rounds[$round][$match]['away']) instead of a string ("name1 vs. name2"), because then it would then be easy to add $rounds[$round][$match]['referee']. Then it would be a matter of assigning referees to each game, but I'm going to guess there are conditions about which games referees should and shouldn't officiate for reasons of fairness.

      2 months later
      Write a Reply...