2008-12-03 7 views
9

J'essaye de créer un tableau commençant par aujourd'hui et remontant les 30 derniers jours avec PHP et j'ai des problèmes. Je peux estimer mais je ne connais pas un bon moyen de le faire et de prendre en compte le nombre de jours du mois précédent etc. Est-ce que quelqu'un a une bonne solution? Je ne peux pas m'en approcher mais je dois m'assurer qu'il est précis à 100%.Créer un tableau des 30 derniers jours en utilisant PHP

Répondre

28

Essayez ceci:

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

Je pense que vous vouliez que la date soit affectée à $ d [i], et non à $ d []. – Matt

+1

Matt: Non $ d [] c'est mieux – OIS

+0

Pour ceux qui ne font pas Je sais, ce que '$ d []' fait ici c'est ajouter le résultat à la fin du tableau – Ren

0

Vous pouvez utiliser le temps de contrôler les jours:

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

Maintenant, dans la boucle, vous pouvez utiliser la variable the_date de $ pour quelque but que vous voudrez peut-être . :-)

+0

Pedrin, faites attention à cette méthode en utilisant le temps. Au lieu de cela, je vous conseille d'utiliser la fonction strtotime -Matt – Matt

+0

il vous manque un $ avant i ++ .. merci pour la boucle utile :) –

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

Pour ceux qui veulent montrer les ventes des derniers jours X,
As asked in this closed question (https://stackoverflow.com/questions/11193191/how-to-get-last-7-days-using-php#=), cela a fonctionné pour moi.

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

} 

Avant de se mettre en colère: J'ai placé cette réponse ici pour aider quelqu'un qui a dirigé ici de cette question. Impossible de répondre ici :(

Questions connexes