This little snippet gets all the days in a month, and groups them by week.

<?php

    error_reporting(E_ALL);

    // Return an array of all the days in a month grouped by week number
    // (Sunday is considered to be the first day of the week)
    function weeksInMonth($month, $year)
    {
        $firstDay    = mktime(0, 0, 0, $month, 1, $year);
        $daysInMonth = date('t', $firstDay);

        $week        = 1;
        $breakdown   = array();

        for($i = 1; $i <= $daysInMonth; $i++)
        {
            $date = mktime(0, 0, 0, $month, $i, $year);
            $day  = date('l', $date);

            // Sunday triggers the start of a new week, except if it's
            // also the first day of the month.
            if(($day == 'Sunday') && ($i != 1))
            {
                $week++;
            }

            $breakdown[$week][] = $date;
        }

        return $breakdown;
    }


    $results = monthToWeek(6, 2008);

    printf("There are %d weeks in June 2008\n\n", count($results));

    foreach($results as $weekNumber => $days)
    {
        printf("Week %d\n", $weekNumber);

        foreach($days as $day)
        {
            printf("%10s  %s\n", date("l", $day), date("Y-m-d", $day));
        }

        printf("\n");
    }

/*
There are 5 weeks in June 2008

Week 1
    Sunday  2008-06-01
    Monday  2008-06-02
   Tuesday  2008-06-03
 Wednesday  2008-06-04
  Thursday  2008-06-05
    Friday  2008-06-06
  Saturday  2008-06-07

Week 2
    Sunday  2008-06-08
    Monday  2008-06-09
   Tuesday  2008-06-10
 Wednesday  2008-06-11
  Thursday  2008-06-12
    Friday  2008-06-13
  Saturday  2008-06-14

Week 3
    Sunday  2008-06-15
    Monday  2008-06-16
   Tuesday  2008-06-17
 Wednesday  2008-06-18
  Thursday  2008-06-19
    Friday  2008-06-20
  Saturday  2008-06-21

Week 4
    Sunday  2008-06-22
    Monday  2008-06-23
   Tuesday  2008-06-24
 Wednesday  2008-06-25
  Thursday  2008-06-26
    Friday  2008-06-27
  Saturday  2008-06-28

Week 5
    Sunday  2008-06-29
    Monday  2008-06-30
*/
?>