忍者CODE

ログイン

13
カレンダーをテーブルタグで表示しよう

PHPの問題

PHP

完了にする!
問題
今月のカレンダーをテーブルタグを使って画面に表示しよう
次のCSSを適用するとキレイに表示できます
自分の環境に書くコード
              table, tr, td {
    border: solid 1px;
  }
  td {
    text-align: center;
    width: 50px;
  }
¥CSS¥
            
期待する画面
Sun Mon Tue Wed Thu Fri Sta
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

※実行した日付により変わります
ログインして解答を見る
コードのアイコン

解答ソースコード

              date_default_timezone_set("Asia/Tokyo");
$month = date('m');
$year = date('Y');
$last = date("t");
$monthly = [];
$weekly;
// (a)カレンダーを作成する
for ($day = 1; $day <= $last; $day++) {
    $week = date("w", mktime(0, 0, 0, $month, $day, $year));
    if ($day == 1 || $week == 0) {
        $weekly = [];
    }
    $weekly[$week] = $day;
    if ($day == $last || $week == 6) {
        $monthly[] = $weekly;
    }
}
// (b)カレンダーを表示する
echo "Sun Mon Tue Wed Thu Fri Sta\n";
echo "---------------------------\n";
foreach ($monthly as $weekly) {
    for ($week = 0; $week <= 6; $week++) {
        if (isset($weekly[$week])) {
            echo str_pad($weekly[$week], 3, " ", STR_PAD_LEFT);
        } else {
            echo "   ";
        }
        if ($week < 6) {
            echo " ";
        }
    }
    echo "\n";
}
// おまけ
// print_r($monthly);
¥PHP¥
            
答えのアイコン

解説

カレンダーは基本的には1日から月末までとなっている。
まずは月末の日付を求めよう。
date("t")で月末の日付が返ってくるぞ。

カレンダーは横が曜日、縦が週となっている。
2次元配列にすると容易に管理できそうだ。

日にちは直列になっている。
日にちをループさせて日曜日から土曜日の単位にまとめよう。
曜日はdate("w")で求めることができる。
日曜日が0、月曜日が1と続き、土曜日が6となっている。
月初または日曜日に週のデータを初期化し、月末または土曜日にカレンダーにセットするようにしよう。

カレンダーを表示する場合は月初より前、月末より後は別の月となることに注意しよう。
出力がずれる場合はフォントを等幅フォントにすることによって綺麗に揃うぞ。

今回はデータを作る処理と表示する処理を分離することにした。
無駄に思うかもしれないが分離することによって保守性が高くなるのでおススメだ。
twitterのアイコン
活動記録をTweetする
1.PHPについての説明と表示
続きの動画を見たい方は公式LINEから「PHP」と送信すると動画が見れます。

甲賀

なら実務レベルで使えるスキルを
体系的に学ぶことが可能です

Web制作学習は、決して楽ではありませんが
「正しい方向で」「コツコツ」と続ければ、
必ずスキルアップする事が可能です。

甲賀では、挫折せずに学習を継続するための
カリキュラム・サポート体制をご用意しています。

↓↓↓↓

ステップバイステップで
着実にスキルが身につくカリキュラム

  • step 01
    初心者でもよく分かる!
    Web制作の基礎の基礎
    • 1.知っておこうWeb制作に関する基礎知識の話

    • 2.HTMLの書き方や役割を基礎から学ぶマークアップ入門

    • 3.CSSで挫折しない為の基礎学習【超重要プロパティ】

    • 4.基礎を終えたらHTMLコーディングを鍛えよう(デザインから)

    • 5.初心者向けHTMLコーディング完全解説(STEP1総まとめ)

  • step 02
    真似して覚えるWeb制作
    (デザイン〜プログラミングまで)
    • 1.属性ってなに?などなどHTML,CSSの深堀り編

    • 2.デザイナーから直接学ぶ猫ちゃんサイトのデザイン解説

    • 3.鎧模写-YOROIMOSYA【銅の鎧】

    • 4.JavaScriptで学ぶプログラミングの基本のきほん【16項目】

  • step 03
    動きをつけたり、効率化!
    脱初心者を目指すためのスキルを学ぼう
    • 1.jQueryの基本的な使い方から応用まで【プラグイン解説あり】

    • 2.Web制作でCSSを簡単に書くためのSASS入門【小技あり】

    • 3.現場で使うCSS設計の考え方参考サイトを元に解説

    • 4.生のJavaScriptだけで英単語アプリを作ろう(音声読み上げ付き)

  • step 04
    ここまでくれば中級者!
    ちょこっと応用編のWeb制作
    • 1.JavaScriptの屋敷【鳳凰の間】

    • 2.JavaScriptで作るLINE風チャットボット

    • 3.コマンドラインとアプリ操作を同時に学べるGit【15選】

    • 4.EJSを使いコーディング力を中級者まで引き上げる

  • step 05
    実務で必須の制作スキル
    WordPressについて学ぶ
    • 1.鎧模写-YOROIMOSYA【銀の鎧】

    • 2.PHPを基礎から学びたい人向け14項目から学ぶ【入門】

    • 3.PHPで簡易的な掲示板を作ってみよう【コーディングあり】

    • 4.甘えを吹き飛ばす!WordPress開発

    • 5.WordPressで¥400,000の案件を徹底解説!

    • 6.WordPress有料テーマSnow Monkeyの解体書

甲賀を詳しく見る

プログラミングスキルが
一気に上がる!
有料級の解説動画19本
を今なら無料でGETできる!

忍者CODEの公式LINE登録後
LINE内にあるURLよりご覧になれます

  • プログラミング本気で学習してる方
  • もちろん完全無料で且つ手続き不要
  • 将来プログラミングで稼ぎたい方
  • 動画解説で真剣に学びたい方
スキルアップ動画をGET