2008-12-03 5 views
9

Я пытаюсь создать массив, начиная с сегодняшнего дня, и возвращаться к последним 30 дням с PHP, и у меня возникают проблемы. Я могу оценить, но я не знаю, как это сделать, и учитывая количество дней в предыдущем месяце и т. Д. Есть ли у кого-нибудь хорошее решение? Я не могу приблизиться, но я должен убедиться, что он на 100% точным.Создание массива последних 30 дней с использованием PHP

ответ

28

Попробуйте это:

<?php  
$d = array(); 
for($i = 0; $i < 30; $i++) 
    $d[] = date("d", strtotime('-'. $i .' days')); 
?> 
+0

Я думаю, что вы предназначались для даты, которая должна быть назначена $ d [i], а не $ d []. – Matt 2008-12-03 19:08:26

+1

Мэтт: Нет $ d [] лучше. – OIS 2008-12-04 12:13:25

0

Вы можете использовать время, чтобы контролировать дни:

for ($i = 0; $i < 30; $i++) 
{ 
    $timestamp = time(); 
    $tm = 86400 * $i; // 60 * 60 * 24 = 86400 = 1 day in seconds 
    $tm = $timestamp - $tm; 

    $the_date = date("m/d/Y", $tm); 
} 

Теперь внутри для цикла вы можете использовать переменную $ the_date для любой цели, вы можете , :-)

0
$d = array(); 
for($i = 0; $i < 30; $i++) 
    array_unshift($d,strtotime('-'. $i .' days')); 
0

Для тех, кто хочет показать продаж за последние Х дней,
As asked in this closed question (https://stackoverflow.com/questions/11193191/how-to-get-last-7-days-using-php#=), это работает для меня.

$sales = Sale::find_all();//the sales object or array 

    for($i=0; $i<7; $i++){ 
    $sale_sum = 0; //sum of sale initial 
    if($i==0){ 
    $day = strtotime("today"); 
    } else { 
    $day = strtotime("$i days ago"); 
    } 
    $thisDayInWords = strftime("%A", $day); 

    foreach($sales as $sale){ 
    $date = strtotime($sale->date_of_sale)); //May 30th 2018 10:00:00 AM 
    $dateInWords = strftime("%A", $date); 

    if($dateInWords == $thisDayInWords){ 
     $sale_sum += $sale->total_sale;//add only sales of this date... or whatever 
    } 
    } 
    //display the results of each day's sale 
    echo $thisDayInWords."-".$sale_sum; ?> 

} 

Перед тем, как сердятся: Я поместил этот ответ здесь, чтобы помочь кому-то, кто был направлен сюда из этого вопроса. Не могу ответить там :(

Смежные вопросы