phpで簡単なカレンダーを作成する方法を見てサンプルを回してたんですが、なぜか違う動きをします。
おかしい理由はfor文のどこかで余計に+しているということはわかったのですが、出所がわかりません。
変数名を変えたくらいであとは変えてないと思うんですが、何時間かかっても違いがわかりません。
簡単な見落としだと思いますがよろしくお願いします。
間違い図
php
1<?php 2$y=date('Y');//年 3$t=date('n');//月 4//月末日を取得 5$iti=date('j',mktime(0,0,0,$t+1,0,$y)); 6//大本を作成 7$cr=array(); 8$kk=0; 9//月末日までループ 10for($i=1;$i<$iti+1;$i++){ 11//曜日を取得 12 $we=date('w',mktime(0,0,0,$t,$i,$y)); 13//1日の場合 14 if($i==1){ 15//1日の曜日までループ 16 for($s=1;$s<=$we;$s++){ 17 //前半に空文字を 18 $cr[$kk]['day']=''; 19 $kk++; 20 } 21} 22//なぜかここで2ずつ増える。 23var_dump($kk); 24//配列に日付をセット 25$cr[$kk]['day']=$i; 26$kk++; 27 28//月末日の場合 29if($i==$iti){ 30//月末日から残りをループ 31 for($e=1;$e<=6-$we;$e++){ 32//後半に空文字をセット 33 $cr[$kk]['day']=''; 34 $kk++;var_dump($kk); 35} 36} 37 38//配列に日付をセット 39$cr[$kk]['day']=$i; 40$kk++; 41//月末日の場合 42if($i==$iti){ 43 44//月末日からループ 45 for($e=1;$e<=6-$we;$e++){ 46 47//空文字をセット 48 $cr[$kk]['day']=''; 49 $kk++; 50 } 51 } 52} 53?> 54</head> 55<body><br> 56<br><!--ここの数字も違う。--> 57<?php 58var_dump($cr[5]['day']);echo $cr[5]['day']?>
正解図
php
1<?php 2// 現在の年月を取得 3$year = date('Y'); 4$month = date('n'); 5// 月末日を取得 6$last_day = date('j', mktime(0, 0, 0, $month + 1, 0, $year)); 7$calendar = array(); 8$j = 0; 9// 月末日までループ 10for ($i = 1; $i < $last_day + 1; $i++) { 11 // 曜日を取得 12 $week = date('w', mktime(0, 0, 0, $month, $i, $year)); 13 // 1日の場合 14 if ($i == 1) { 15 // 1日目の曜日までをループ 16 for ($s = 1; $s <= $week; $s++) { 17 // 前半に空文字をセット 18 $calendar[$j]['day'] = ''; 19 $j++; 20 } 21 22 } 23 var_dump($j); 24 // 配列に日付をセット 25 $calendar[$j]['day'] = $i; 26 $j++; 27 28 // 月末日の場合 29 if ($i == $last_day) { 30 31 // 月末日から残りをループ 32 for ($e = 1; $e <= 6 - $week; $e++) { 33 34 // 後半に空文字をセット 35 $calendar[$j]['day'] = ''; 36 $j++; 37 38 } 39 40 } 41 42} 43 44?><br><br> 45<?php 46var_dump($calendar[5]['day']);echo $calendar[5]['day']?>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/14 06:13
2016/09/14 06:19