tags:

views:

46

answers:

2

I have some code that generates fixtures, I am looking to add a fixture date to the code.

$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] = "$user[$home]~$team[$home]@$user[$away]~$team[$away]";
        }
    }

$team is the amount of teams in the league. I want to add a variable for every 4 days, and for every round of fixtures generated, I want to add 4 days onto the previous round.

For example, if today is 3rd may, i want 3rd may for first fixture, 7th may for second fixture, 11th may for third fixture.

By fixture i mean round which includes a set of fixtures!

How do I add 4 days to a strotime variable everytime the rounds increase?

+1  A: 

Have you looked into strtotime? It allows syntax like the following:

$future_date = strtotime('+4 days');
$even_further_in_the_future = strtotime('+4 days', $future_date);
$arbitrary_start_date = strtotime('+4 days', strtotime('May 25th, 2010'));
ceejayoz
Thats a great way to put the days you want to go ahead in.But now i'm struggling with how to make it go to the correct date for each round.
Luke
A: 

If I understand your question correctly, you just want each round to have an associated date. You've got an array of $rounds, so could you not just create a correspondingly-keyed array to hold the round dates?

...
$rounds = array();
$roundDates = array();
$curTime = time();
for ($i = 0; $i < $totalRounds; $i++) {
    $rounds[$i] = array();
    $numDays = $i * 4;
    $roundDates[$i] = strtotime("+".$numDays." days",$curTime);
}

foreach($roundDates as $time) echo date("Y-m-d",$time)."\n";
//gives
//2010-05-03
//2010-05-07
//2010-05-11
//etc
zombat
Best answer I have had so far, could this be put into the code i provided?
Luke
I fact I have got the first part in my code. But the foreach, how will that work with my second for loop.For each round, i need to add the appropriate date on each fixture within that round.
Luke
Yes, I worked it into your code already. `$roundDates` is indexed the exact same way as `$rounds`, so you can just access it with the same loop `$round` value in your `$rounds` loop.
zombat
So i dont need the foreach loop?
Luke
Wont let me edit that, i will put the foreach loop and then continue with the round for loop. CHeers bud
Luke