Cara paling kuat untuk melakukannya adalah dengan menggunakan DateTime
bukannya 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
Sekarang, Anda dapat membentuk susunan tanggal seperti ini:
$sale_data = array();
foreach( $period as $day) {
$key = $day->format( 'M d');
$sale_data[ $key ] = 0;
}
menginisialisasi array Anda untuk sesuatu seperti:
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)
}
Sekarang Anda memiliki larik dengan semua kemungkinan tanggal dalam 7 hari terakhir, dan Anda dapat melakukannya di loop Anda:
$display_date = date('M d', $sale['created']);
$sale_data[$display_date] += $sale['amt'];
Anda tidak perlu memeriksa apakah kunci array ada, karena dijamin ada.
Akhirnya, saya akan merekomendasikan melihat ke DATETIME
atau jenis kolom tanggal/waktu terkait lainnya, karena akan lebih berguna di sini daripada menyimpan cap waktu UNIX. Anda dapat menggunakan fungsi tanggal/waktu MySQL untuk memilih baris yang Anda cari dengan benar daripada harus membuat stempel waktu UNIX setiap kali Anda ingin meminta data berdasarkan waktu.