そうですね、まずはカレンダーの日付部分のセルを左上から右に0、1、2…と考え、
配列に数字を入れたものをテーブルを作成する際にそこに入れていけば良いのではないでしょうか。
カレンダーは日曜日から始まってるとして、
1日目の位置を考えます、
PHP
1date("w",strtotime("2018-6-1"));
このコードで曜日が日曜から順に0,1,2,3,4,5,6と取得できますので、
配列のその曜日番号から順に月末まで入れてやればOKです、
PHP
1date("t",strtotime("2018-6"));
月末の日付は上記で取得できます。
あとは…
PHP
1for ($i = 0; $i <= 月末日付; $i++) {
2 配列[$i + 月頭曜日] = $i
3}
こんな感じで回してやればOKです、
あとはHTMLの該当部分にDOM操作で日付をいれてやればOKです。
配列の日付が入っている部分以外は初期化されていませんので、
事前に全て””を代入して初期化してやるなり、
出力する際にUndefined判定をするなりなんとかしてください。
動的にするには「月」を変数に入れて上記の月頭曜日の数字取得と、
月末日付取得の”月”部分に入れて、再度実行すれば良いかと思います。
サンプルをちょいちょいっと書いてみました。
PHP
1$tsuki = 9;
2$gm = date("t",strtotime("2018-" . $tsuki));
3$ga = date("w",strtotime("2018-" . $tsuki . "-1"));
4for ($i = 0; $i <= 42; $i++){
5 $carray[$i] = "";
6}
7for ($i = 1; $i <= $gm; $i++) {
8 $carray[$i + $ga] = $i;
9}
10echo "<table>";
11echo "<TR><TD>日</TD><TD>月</TD><TD>火</TD><TD>水</TD><TD>木</TD><TD>金</TD><TD>土</TD></TR>";
12
13echo "<TR>";
14for ($i = 0; $i <= 42; $i++) {
15 echo "<TD>" . $carray[$i] . "</TD>";
16 if ($i%7 == 0){
17 echo "</TR><TR>";
18 }
19}
20echo "</TR>";
21echo "</TABLE>";
できるだけわかりやすい構文で、入門者でもわかりやすく書きました。
見たことがない可能性があるのは「$i%7」ここくらいでしょうか?
%演算子は剰余、割ったあまりを返します、
あまりがゼロであれば、つまり7日毎に </TR><TR> を出して改行してる感じですね。