2008-12-03 28 views
9

Bugün ile başlayan bir dizi oluşturmaya çalışıyorum ve son 30 güne PHP ile geri dönüyorum ve sorun yaşıyorum. Tahmin edebilirim, ancak bunu yapmanın iyi bir yolunu bilmiyorum ve önceki aydaki günlerin sayısını hesaba katıyorum. Kimsenin iyi bir çözümü var mı? Yaklaşamam ama% 100 doğru olduğundan emin olmalıyım.PHP Kullanarak Son 30 Gün İçinde Bir Dizi Oluşturun

cevap

28

bu deneyin:

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

$ d [] için değil, $ d [] için atanan tarihin kastettiğini düşünüyorum. – Matt

+1

Matt: Hayır $ d [] daha iyi. – OIS

+0

bilmiyorum, what '$ d []' burada dizinin sonuna bir sonuç ekliyor – Ren

0

Günleri kontrol için zaman kullanabilirsiniz: döngü için size istediğiniz ne olursa olsun amaçları için $ the_date değişkeni kullanabilirsiniz dahilinde, Şimdi

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); 
} 

. :-) geçmiş X günlük satış göstermek isteyenler için

+0

Pedrin, zaman kullanarak bu yönteme dikkat edin. Bunu yapardım, sonra farkettim. Gün ışığından yararlanma saati ile belirli zamanlarda doğru bir şekilde hesaplanmayacaktır. Bunun yerine strtotime işlevini kullanmanızı öneriyorum. -Matt – Matt

+0

Bir $ i ++ öncesinde eksiksiniz. :) –

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#=), bu benim için çalıştı.

$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; ?> 

} 

Kızgın olsun önce

: Ben bu soruya burada yönetilmiştir birine yardım etmek için bu cevabı yerleştirilir. Orada cevap olamaz :(