Najbardziej niezawodnym sposobem na to jest użycie DateTime
zamiast strtotime
:
$now = new DateTime( "7 days ago", new DateTimeZone('America/New_York'));
$interval = new DateInterval( 'P1D'); // 1 Day interval
$period = new DatePeriod( $now, $interval, 7); // 7 Days
Teraz możesz utworzyć swoją tablicę dat w następujący sposób:
$sale_data = array();
foreach( $period as $day) {
$key = $day->format( 'M d');
$sale_data[ $key ] = 0;
}
To inicjuje twoją tablicę na coś takiego:
array(8) {
["Jun 18"]=> int(0)
["Jun 19"]=> int(0)
["Jun 20"]=> int(0)
["Jun 21"]=> int(0)
["Jun 22"]=> int(0)
["Jun 23"]=> int(0)
["Jun 24"]=> int(0)
["Jun 25"]=> int(0)
}
Teraz masz tablicę ze wszystkimi możliwymi datami z ostatnich 7 dni i możesz to zrobić w swojej pętli:
$display_date = date('M d', $sale['created']);
$sale_data[$display_date] += $sale['amt'];
Nie musisz sprawdzać, czy klucz tablicy istnieje, ponieważ na pewno istnieje.
Na koniec polecam zajrzeć do DATETIME
lub inne powiązane typy kolumn daty/godziny, ponieważ byłyby tutaj bardziej przydatne niż przechowywanie znaczników czasu UNIX. Możesz używać funkcji daty/czasu MySQL, aby prawidłowo wybrać wiersze, których szukasz, zamiast tworzyć znacznik czasu UNIX za każdym razem, gdy chcesz wykonać zapytanie o dane na podstawie czasu.