Jump to content

Archived

This topic is now archived and is closed to further replies.

mattastic

looping through array

Recommended Posts

Hi Folks.

I have my array that I will populate with a title and startdate and enddate. This will be done using a query but I've done it manually here so you can see the test data.

I then want to loop thorugh the days in a month and highlight the days that will have events. Problem is I get 3 of everything, here is the result of this page:

[a href=\"http://www.w00t.biz/result.html\" target=\"_blank\"]http://www.w00t.biz/result.html[/a]

Can anyone help me with this please?

Thanks

[code]
<?php


$n = 1;
for ($n = 1; $n <= 3; $n++){

//set event dates to array
    $events['event1']['title'] = 'test event 1';
    $events['event1']['startdate'] = mktime(0, 0, 0, 3, 5, 2006);
    $events['event1']['enddate'] = mktime(0, 0, 0, 3, 8, 2006);
    
    $events['event2']['title'] = 'test event 2';
    $events['event2']['startdate'] = mktime(0, 0, 0, 3, 6, 2006);
    $events['event2']['enddate'] = mktime(0, 0, 0, 3, 7, 2006);
    
    $events['event3']['title'] = 'test event 3';
    $events['event3']['startdate'] = mktime(0, 0, 0, 3, 22, 2006);
    $events['event3']['enddate'] = mktime(0, 0, 0, 3, 26, 2006);
    
    
    echo $events['event'.$n]['title'] . "<br>";
    echo date('d',$events['event'.$n]['startdate']) . "<br>";
    echo date('d',$events['event'.$n]['enddate']) . "<br>";
    echo "<br><br>";
}


echo "<p><p><p>";
for ($p = 1; $p <= 31; $p++) {

  $i = 1;
while (isset($events['event'.$i]))
        {
          
        if (
        (date('d',$events['event'.$i]['startdate'])  < $p AND date('d',$events['event'.$i]['enddate'])  > $p )
        OR
        (date('d',$events['event'.$i]['startdate']) == $p
        OR
        date('d',$events['event'.$i]['enddate'])  == $p
        ))
            {
                echo "<b>" . $p . "</b>" . "<br>";
            }
            else{
              echo $p . "<br>";
            }

        $i++;
        
        }

}

?>
[/code]

Share this post


Link to post
Share on other sites
You get everything 3 times as it's all inside the first for loop;

Try this

[code]// array of days in month
$days = array();
for ($i=1; $i <= 31; $i++) {
    $days[$i] = array();
}

//set event dates to array
    $events['event1']['title'] = 'test event 1';
    $events['event1']['startdate'] = mktime(0, 0, 0, 3, 5, 2006);
    $events['event1']['enddate'] = mktime(0, 0, 0, 3, 8, 2006);
    
    $events['event2']['title'] = 'test event 2';
    $events['event2']['startdate'] = mktime(0, 0, 0, 3, 6, 2006);
    $events['event2']['enddate'] = mktime(0, 0, 0, 3, 7, 2006);
    
    $events['event3']['title'] = 'test event 3';
    $events['event3']['startdate'] = mktime(0, 0, 0, 3, 22, 2006);
    $events['event3']['enddate'] = mktime(0, 0, 0, 3, 26, 2006);
    
    
echo '<pre>', print_r($events, true), '</pre>';

// add events to relevant days
foreach ($events as $ev_data) {
    $s = date('j', $ev_data['startdate']);
    $e = date('j', $ev_data['enddate']);
    for ($i = $s; $i <= $e; $i++) {
        $days[$i][] = $ev_data['title'];  
    }
}

// print results
foreach ($days as $d => $ev)  {
    echo "$d : " , join (', ', $ev), '<br />';
}
[/code]

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.