<?php
// Set demo vars
$year = '2012';
$months = array('10','11','12');
$days = array('01','02','03','04','06','07','08','09','11','12','13','14','16','17','18','19','21','22','23','24','26','27','28','30');
$dateWs = array();
foreach($months AS $month)
foreach($days AS $day)
$datesWS[] = new DateTime($year.'-'.$month.'-'.$day); // Push DateTime object to the WebService array
// Shuffle
shuffle($datesWS);
// Sort dates
usort($datesWS, function ($a, $b){
return ($a == $b) ? 0 : (($a > $b) ? 1 : -1);
});
$dateIni = count($datesWS)>0 ? $datesWS[0] : 0; // Get first date
$dateEnd = count($datesWS)>0 ? $datesWS[count($datesWS)-1]) : 0; // Get last date
$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' )));
var_dump($datesWS);
die();
// 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');
}
var_dump($excludeDates);
/*
// 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)));
*/
?>