Nejrobustnějším způsobem, jak toho dosáhnout, je použít DateTime
místo 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
Nyní si můžete vytvořit pole dat takto:
$sale_data = array();
foreach( $period as $day) {
$key = $day->format( 'M d');
$sale_data[ $key ] = 0;
}
Toto inicializuje vaše pole na něco jako:
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)
}
Nyní máte pole se všemi možnými daty za posledních 7 dní a můžete to udělat ve smyčce:
$display_date = date('M d', $sale['created']);
$sale_data[$display_date] += $sale['amt'];
Nemusíte kontrolovat, zda klíč pole existuje, protože je zaručeno, že existuje.
Nakonec bych doporučil podívat se do DATETIME
nebo jiné související typy sloupců data/času, protože by zde byly užitečnější než ukládání časových razítek UNIX. Můžete použít funkce data/času MySQL ke správnému výběru řádků, které hledáte, místo toho, abyste museli vytvářet UNIX časové razítko pokaždé, když se chcete dotazovat na data na základě času.