在PHP中填写日期对象数组中缺少的元素

I have an array of objects in php which looks like:

Array
(
    [0] => Array
      (
        [day] => 1/23/2013
        [executions] => 1
      )

    [1] => Array
      (
        [day] => 1/24/2013
        [executions] => 1
      )

    [2] => Array
      (
        [day] => 1/27/2013
        [executions] => 10
      )

    [3] => Array
      (
        [day] => 1/29/2013
        [executions] => 1
      )

    [4] => Array
      (
        [day] => 1/30/2013
        [executions] => 3
      )

    [5] => Array
      (
        [day] => 2/8/2013
        [executions] => 1
      )

   [6] => Array
      (
        [day] => 2/11/2013
        [executions] => 3
      )

)

I am building a graph of this data, and basically it represents the last 30 days. The problem is I don't get the missing days, i.e. when there was no executions from the query. I am looking to fill in these missing days with PHP, simple set the day to the correct date, and executions to 0. Thus the result array should contain 30 elements, assuming start is 1/18/2013 and end is today 2/17/2013.

Any idea of the best algorithm to accomplish this in PHP?

Something like:

$start = '1/18/2013';
$end = '2/17/2013';

$range = new DatePeriod(
  DateTime::createFromFormat('m/d/Y', $start),
  new DateInterval('P1D'),
  DateTime::createFromFormat('m/d/Y', $end));

$filler = array();

foreach($range as $date)
  $filler[] = array(
    'day'      => $date->format('m/d/Y'),
    'execution' => 0,
  };

$array += $filler;

Loop through each date using DateTime:

$start = new DateTime('2013-01-18');
$end = new DateTime('2013-02-17');
while ($start <= $end)
{
    $current_date = $start->format('m/d/Y');
    // Right here look in your array and see if that date exists
    // and do whatever you need to do if it does/does not
    $start->modify("+1 day");
}

You may use this:

$startDate = new DateTime ( "-30 days" );
$dateItter = new DatePeriod ( 
    $startDate,
    new DateInterval ('P1D'),
    30  
);

$original = array (
    array ( 
        'days' => '02/16/2013',
        'executions' => 5
    )   
);

$result = array (); 

foreach ( $dateItter as $date )
{
    $executions = 0;

    foreach ( $original as $item ) { 
        if ( $item['days'] == $date->format ( 'm/d/Y' ) ) 
            $executions = $item['executions'];
    }   

    $result[] = array (
        "day" => $date->format ( 'm/d/Y' ),
        "executions" => $executions
    );  
}

var_dump ( $result );

It is slow for large amount of data but for 30 items will be ok!