2017-04-20 25 views
0

PHPのCarbonライブラリを使用して、1週間からすべての週と週の日を取得しようとしています。私はこれを試してみた月曜日から金曜日までの月曜日から日曜日までのリスト

array(
    'April' => array(
     array(
      '2017-04-03', // Monday 
      '2017-04-04', // Tuesday 
      '2017-04-05', // Wednesday 
      '2017-04-06', // Thursday 
      '2017-04-07', // Friday 
      '2017-04-08', // Saturday 
      '2017-04-09', // Sunday 
     ), 

     array(
      '2017-04-10', // Monday 
      '2017-04-11', // Tuesday 
      '2017-04-12', // Wednesday 
      '2017-04-13', // Thursday 
      '2017-04-14', // Friday 
      '2017-04-15', // Saturday 
      '2017-04-16', // Sunday 
     ), 

     array(
      '2017-04-17', // Monday 
      '2017-04-18', // Tuesday 
      '2017-04-19', // Wednesday 
      '2017-04-20', // Thursday 
      '2017-04-21', // Friday 
      '2017-04-22', // Saturday 
      '2017-04-23', // Sunday 
     ), 

     array(
      '2017-04-24', // Monday 
      '2017-04-25', // Tuesday 
      '2017-04-26', // Wednesday 
      '2017-04-27', // Thursday 
      '2017-04-28', // Friday 
      '2017-04-29', // Saturday 
      '2017-04-30', // Sunday 
     ), 
    ), 
); 

for($i = 1; $i <= 4; $i++) { 
    $carbon = new Carbon(new Carbon('2017-04-03'), 'Europe/Sarajevo'); 
    $model[] = $carbon->addWeeks($i); 
} 

しかし、私ので、私のニーズに十分ではない私は、配列を構成するのは、現在の月の言う、このようなものにしてみましょうしたいのですが日付を手動で設定します。もちろん、私はstrtotime('First Monday of MonthName Year');の力を利用することができますが、それはまた、上記のように数週間の配列を構成するロジックを理解するのに役立ちません。


EDIT:基本的に、私が欲しいのはつまり、与えられた月の第1月曜日から最後の日曜日までに始まるすべての週を一覧表示することです。現在のように、私は上記のように配列として構成します。

答えて

0

あなたはこれを試すことができます。

$month = "04"; 
$carbon = new Carbon(new Carbon(date('Y-m-d', strtotime('next monday', strtotime('2017-' . $month . '-01'))), 'Europe/Sarajevo'); 
$weeks_array = []; 

while (intval($carbon->month) == intval($month)){ 
    $week_array[$carbon->weekOfMonth][ $carbon->dayOfWeek ] = $carbon->toDateString(); 
    $carbon->addDay(); 
} 
+0

はありません、それは4月のための第三上にある特定の月の最初の月曜日から開始されません。 – omerowitz

+0

私は自分の答えを更新しました。 –

関連する問題