<?php
/**
* Aggregates date values and handles potential errors.
*
* @param array $dates An array of date strings in 'YYYY-MM-DD' format.
* @return array An associative array with the count of each date. Returns an empty array on error.
*/
function aggregateDates(array $dates): array
{
$dateCounts = [];
foreach ($dates as $dateString) {
// Validate the date format
if (!preg_match('/^\d{4}-\d{2}-\d{2}$/', $dateString)) {
echo "Error: Invalid date format - " . $dateString . "\n";
return []; // Return empty array on error
}
// Check if the date is valid (optional, but recommended)
if (checkdate(intval(substr($dateString, 0, 4)), intval(substr($dateString, 5, 2)), intval(substr($dateString, 8, 2)))) {
if (isset($dateCounts[$dateString])) {
$dateCounts[$dateString]++;
} else {
$dateCounts[$dateString] = 1;
}
} else {
echo "Error: Invalid date - " . $dateString . "\n";
return []; // Return empty array on error
}
}
return $dateCounts;
}
// Example Usage
$dateArray = ["2023-10-26", "2023-10-27", "2023-10-26", "2023-10-28", "invalid-date", "2023-10-27"];
$aggregatedDates = aggregateDates($dateArray);
if (!empty($aggregatedDates)) {
echo "<pre>";
print_r($aggregatedDates);
echo "</pre>";
}
?>
Add your comment