Web

【PHP】1ヶ月分のカレンダーコードをプログラミングで作成してみよう!【プログラミング初心者が独学で1から掲示板サイトを作れるのか?Part6】

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る
プログラミング初心者が独学で1から掲示板サイトを作れるのか?Part6サムネイル

こんにちは、穏やか暮らし計画ライターのあらです。

前回の記事では、for文やwhille文を使って「繰り返し」というものをやってみました。今回はこれまで習ったことを応用して、1ヶ月分のカレンダーをプログラミングで作成してみたいと思います。

この記事はシリーズもののブログ記事です。まだ#1の(プログラミング初心者が独学で1から掲示板サイトを作れるのか?【始めた理由と目標編】)から見ていない方は#1からぜひ見てみてください。

1ヶ月分のカレンダーを表示させるには

今回のカレンダーは、11/22(Sun)からの1ヶ月間の日付を作成していきます。カレンダーを作成するので、日付関数のdate関数を利用していきます。

流れとしては、

  • for文で1~31までの数字を繰り返し
  • date文で今日から1~31日後までの日付を月/日(曜日)に組み込む
  • printで組み込んだdate文を表示させる

全体的にこのような感じになります。

早速、自分でコードを書いてみたので見ていきましょう。

表示結果は、

見切れてしまっていますが、11月23日からの1ヶ月分の日付が表示されていました。

それでは1つ1つコードの解説をしていこうと思います。

1ヶ月カレンダーコードの解説

1ヶ月カレンダー【for文編】

for文の部分は前回の記事で解説しているので、そこまで説明することがないですが、$i=1はスタート値。$i=0にすると今日を含めて31日後まで、$i=7にすると7日後から31日後までの日付、11/29~12/23まで表示されることになります。

そしてfor文の真ん中、$i<=31の部分は終わり値。$i<=365にすれば1年後までの日付を表示させることも可能です。自分は表示結果を確認しづらくなりそうなので、1ヶ月カレンダーにしました。

$i++は$i=$i+1と同じ意味のコードになります。この部分も変えることで今日から1年前までの日付、偶数分の日付だけを表示させることも可能になりまし。

このfor文がよくわからない方は前回の記事で詳しく説明しているので、そちらをご覧ください。

1ヶ月カレンダー【date編】

date関数はdate()でかっこの中に指定の英文字を入れることによって、現在の時間や日にちなど色々表示させることができるようです。

例えば、

Yというのは4桁表記の年を表すための文字になります。表示結果は2020。現在の年になったので、予想通りの結果になりました。このようにdate関数の中に自分が表示したい文字を入れれば、printで表示させることができます。

  • Y:年(4桁表記)
    • y:年(2桁表記)
  • m:月(2桁表記)
    • n:月(先頭にゼロつけない)
  • d:日(2桁表記)
  • H:時間(24時間単位)
    • h:時間(12時間単位)
  • i:分
  • s:秒
  • t:指定した月の日数
  • w:曜日番号(0[日曜]から6[土曜]の値)
  • .:文字列連結
  • \n:改行

出典:PHPで日付関数を使いこなす(date,strtotime)-Qiita

そして、date関数にはもう1つの使い方があります。それはタイムスタンプを指定できることです。

dateには2個目の値を変化させる変数を付け加えることができます。どういうことかと言うと、上記の画像でみるとstrtotimeで現在(Y)からちょうど1年後の日付を変数($year)に代入しています。

現在2020年の1年後は2021なので、このコードを実行してみると、ちゃんと2021という表示結果が出たのでクリアです。

これでdate、strtotimeの使い方はマスターできたので、for文と組み合わせて使ってみましょう。

for文とdate文を組み合わせてみる

こちらがfor文とdate文を組み合わせたコードになります。

date(’n/j(D)’)は、n(月)、j(日)、D(英文字の曜日)で表示するように指定しています。そして、strtotimeの()の中身ですが、for文で$iが1の場合は1日後、$iが2の場合は2日後….というように現在から1〜31日後まで実行されるようになっています。

私はこれに気づけるまで、結構時間がかかりました。ぐちゃぐちゃしていて、参考書を見てもstrtotimeの中身の説明はありませんでした。個人的に1番難しいところでした。

最後に

これで1ヶ月カレンダーを作成するコードは完成になります。1度わかってしまえば、とても納得できるコードなので、1年後までだったり、年だったり色々コードをいじってみたくなりました。

だんだんと複雑なコードになってきましたが、一個ずつ全てのコードの意味がわかるようになるまで、詰めていければなと思っています。

また次回の課題も頑張っていきたいと思います!

▼私が参考にしている教材

▼前回の記事 for文とwhile文で繰り返しコードを作成

【PHP】for文、while文を使って繰り返し文を作る!【プログラミング初心者が独学で1から掲示板サイトを作れるのか?Part5】