Do not replicate items if they exists in a foreach loop

Just set a flag to check for a new value, and only display the date if the new value does not match the flag, like so:

<?php 
$args = array(
    'post_type' => 'tv-schedule',
    'posts_per_page' => -1,
    'orderby' => 'date',
    'order' => 'ASC',
    'post_status' => array('publish', 'future'),
);
$posts_array = query_posts($args); 

$flag = ''; // set an initial value that won't match the first date

foreach ($posts_array as $post_array) {
    $date = $post_array->post_date_gmt;
    $new_date = date ('Y-m-01', strtotime($date) );
    if($new_date != $flag) {
        echo $new_date . '<br />';
        $flag = $new_date; // $flag only changes when we actually display a new date
    }

    /*
    if(!in_array($new_date, $post_array->post_date_gmt)){
        //$a[]=$value;
        echo "test";
    }
    */

}

UPDATE

Changed !== to != so that it would work.