2016-09-20 7 views
0

日付から配列を繰り返す必要があります。PHPで配列の日付を繰り返します

例:

start date: 09/20/2016 

$ Rounds = array ('evening', 'afternoon', 'Morning', 'Night', 'Rest'); 

20/09/2016 evening 
21.09.2016 afternoon 
22.09.2016 morning 
23/09/2016 night 
24/09/2016 rest 
09/25/2016 evening 
09.26.2016 afternoon 
09.27.2016 morning 
.... 

私は私がそれをさらに向上させるのではなく例を印刷するのに役立ち、この古いスクリプトを持っています。 20/09/2016あなたは

$data = '03/10/2014'; 
$turni = array('sera','pomeriggio','Mattina','Notte','Riposo'); 

$n_g_mesi = array(1=>31,28,31,30,31,30,31,31,30,31,30,31); 
list($gg,$mm,$aa) = explode('/', $data); 
$gg = (int)$gg; 
$mm = (int)$mm; 
$n_g_q_mese = $n_g_mesi[$mm]; 

$numero_turni = 10; 

$n = count($turni); 
for($i=0; $i<$numero_turni; $i++) { 
    echo $data.' '.$turni[$i%$n]."<br />\n"; 
    $gg = $gg%$n_g_q_mese+1; 

    if($gg==1) { 
     $mm = $mm%12+1; 
     if($mm==3 && $aa%4==0 && $n_g_q_mese==28) { // se l'anno è bisestile 
      $mm = 2; 
      $gg = $n_g_q_mese = 29; 
     } 
     else { 
      $n_g_q_mese = $n_g_mesi[$mm]; 
      if($mm==1) 
       $aa++; 
     } 
    } 
    $data = str_pad($gg,2,'0',STR_PAD_LEFT).'/'.str_pad($mm,2,'0',STR_PAD_LEFT).'/'.$aa; 
} 

fullcalendarプラグインjQueryを使って使用することができますので、それは、JSON配列になるだろうここでは、ソリューションであるあなたに

答えて

0

に感謝:

$aDate = '2016-09-20'; 
$rounds = array('Evening', 'Afternoon', 'Morning', 'Night', 'Rest'); 
for($i=0; $i<20; $i++) { 
    $nextDate = date("Y-m-d", strtotime('+1 day', strtotime($aDate))); 
    echo "\n<br>" . $nextDate . " " . $rounds[$i%count($rounds)]; 
    $aDate = $nextDate; 
} 

出力:

2016-09-21 Evening 
2016-09-22 Afternoon 
2016-09-23 Morning 
2016-09-24 Night 
2016-09-25 Rest 
2016-09-26 Evening 
2016-09-27 Afternoon 
2016-09-28 Morning 
2016-09-29 Night 
2016-09-30 Rest 
2016-10-01 Evening 
2016-10-02 Afternoon 
2016-10-03 Morning 
2016-10-04 Night 
2016-10-05 Rest 
2016-10-06 Evening 
2016-10-07 Afternoon 
2016-10-08 Morning 
2016-10-09 Night 
2016-10-10 Rest 
+1

あなたのコードの次の日に開始した問題のみ、素晴らしい作品。最初に与えられた例2010/10/01 your code 2010/10/02 – Sixdas

+0

あなたは$ aDate = '2016-09-20'のように開始日を修正することができます。 $ aDate =日付( "Y-m-d"、strtotime( ' - 1日'、strtotime($ aDate))); –

0

PHPの日付と配列を処理する別の方法を示す別の解決策があります。

<?php 

$dataString = "03/10/2014"; 
$data = DateTime::createFromFormat("!m/d/Y", $dataString); 

$turni = ["Sera", "Pomeriggio", "Mattina", "Notte", "Riposo"]; 

$numeroTurni = 10; 

foreach (range(1, $numeroTurni) as $i) { 
    printf("%s %s<br />\n", $data->format("Y-m-d"), current($turni)); 
    if (!next($turni)) { 
     reset($turni); 
    } 
    $data->add(new DateInterval("P1D")); 
} 

出力:

2014-03-10 Sera<br /> 
2014-03-11 Pomeriggio<br /> 
2014-03-12 Mattina<br /> 
2014-03-13 Notte<br /> 
2014-03-14 Riposo<br /> 
2014-03-15 Sera<br /> 
2014-03-16 Pomeriggio<br /> 
2014-03-17 Mattina<br /> 
2014-03-18 Notte<br /> 
2014-03-19 Riposo<br />