<?php
// Set demo vars
$year = 2012;
$months = array(10,11,12);
$days = array(1,2,3,4,6,7,8,9,11,12,13,14,16,17,18,19,21,22,23,24,26,27,28,29,31);
foreach($months AS $month)
foreach($days AS $day)
$datesWS[] = new DateTime(implode('-',array($year,$month,$day))); // Push DateTime object to the WebService array
// Sort dates
usort($datesWS, function ($a, $b){
return ($a == $b) ? 0 : (($a > $b) ? 1 : -1);
});
$dateIni = count($datesWS)>0 ? reset($datesWS) : 0; // Get first date
$dateEnd = count($datesWS)>0 ? end($datesWS) : 0; // Get last date
var_dump(array_shift($datesWS));
var_dump(array_pop($datesWS));
/*
$interval = new DateInterval('P1D'); // Set date interval as 1 day
// Generate dates range and Transform iterator to array
$datesRange = iterator_to_array(new DatePeriod($dateIni, $interval, $dateEnd->modify( '+1 day' )));
// This way seems to work
foreach($datesRange AS $date)
{
if(!in_array($date->format('d/m/Y'),array_values(array_map(function($obj){
return $obj->format('d/m/Y');
},$datesWS))))
$excludeDates[] = $date->format('d/m/Y');
}
// This way should be more efficient, but I'm fed up with it!
// Get excluded dates
$excludeDates = array_udiff($datesRange, $datesWS, function ($a, $b) {
return $a == $b ? 0 : 1;
}); // Comment/Uncomment this in order to print this method or the other one
// Print array(objects) as array(strings)
var_dump(array_values(array_map(function($obj){
return $obj->format('d/m/Y');
},$datesWS)));
var_dump(array_values(array_map(function($obj){
return $obj->format('d/m/Y');
},$datesRange)));
var_dump(array_values(array_map(function($obj){
return $obj->format('d/m/Y');
},$excludeDates)));
*/
?>