PHP入門

While構文2–日付との組み合わせ

全334コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
while構文の条件には「比較演算子」を指定することができます。これをうまく使えば、さまざまな条件で繰り返しを行うことができます。while構文の高度な例を紹介しましょう。
講師:
15:04

字幕

ここでは、while 構文の2としましてwhile 構文を日付と組み合わせたり様々な複雑な条件で使っていくという例を紹介していきたいと思います。前のレッスンからの続きとなりますのでwhile 構文がまだきちんと理解できていないということであれば前のレッスンを参照していただくと良いかと思います。では、1つサンプルを作っていきましょう。MAMP のアップロードファルダのhtdocs こちらに1つフォルダを作っていただきます。ここでは、lesson03-02 としましょう。そして、この中にテンプレートのhtml 群をコピーしていきます。index.html というファイルがありますがここでは、php を組み込んできますので拡張子を .php にしなければいけません。この .php というファイルを DreamWeaver にドラッグ&ドロップして編集をしていきましょう。まず、タイトルを簡単に付けます。こちらにも、while 構文ということでタイトルをつけていきましょう。では、この中にプログラムを書いていきます。では、ここではまず先にこんなプログラムを書いてみます。print で date の j とします。 このプログラム前のレッスンでやりましたけれどもdate function 日付を管理するfunction です。そして、print で、その文字を画面に表示するということでここでは、j というパラメータ、これは今日の日付を取得するというパラメータです。このプログラムを実際に動かしてみます。MAMP を起動してサーバーを起動しapache が起動した状態であるならサファリからhttp://localhost:8888/lesson03-02 のindex.php こちらにアクセスをします。するとここが今皆さんが実行している日によって変わるのですけど6とか、1から 31 までのいづれかの数字が出ているのではないかなと思います。これは今日の日付です。例えば、この date という function を使って今日の日以降を表示する例えば、何か予約フォーム等を作る時に今日以降でなければ予約がとれない場合に1から、例えば、この例ですと5までの間はもう予約が取れません。なので、6以降の日付で予約が取れるようなドロップダウンを作っていこうと思います。まず、これは少し覚えていただきつつwhile 構文を復習していきましょう。 例えば、date=1 とします。そして、while としましてdate を31までにします。そして、まずここに select タグですね、name として例えば、予約ということなのでreserve としましょう。そして、この中に option としてvalue を print の day とします。更にここにも print の day とします。ここでは、例えば、日等とそれぞれ表示するようにしましょう。では、ここで、day= date+1 としまして、endwhile とします。後は、select 要素を閉じてあげるとこれでドロップダウンリストが出来上がります。で、この状態ですと再読み込みをします。1日からずっと行きまして31日まで繰り返されるこれは1つ前のレッスンと同じプログラムとなります。ここから、この1日から5日をこの場合、除くという形にしたいので先ほどの date という function と組み合わせていきます。例えば、繰り返しの始まりですね、6日これを制御するには18行目に着目します。18行目にここでは$day という変数に対して1という数値を記憶しているのでここは1から始まっているわけです。 なので、day= の後の1を代わりにdate としまして j とします。date の j というパラメータは先ほどやった通り今日の日付を取ることができますのでこの $day は最初は6になります。では、実際に動かしてみましょう。画面を再読み込みしますとドロップダウンの最初は6にそしてずっと行きまして31までという形になっています。では、今度は逆に1日から6日までの間という選択肢に全く逆の選択肢ですね1日から始まって6日までの選択肢を出したい場合にはどうしたらいいかといいますと今度は最初のこの処理というのは$day =1から変わりません。そして、この while の中に入っている$day がこれは以上という意味ですけど31で $day 以上という条件となっている終わりの条件が変わることになります。この31の部分を6にすれば実際に date を括弧して j とします。これを動かしてみましょう。画面を再読み込みしますとこのように、1から2、3、4、5、6ということで今日の日付までが選択肢として出るようになりました。このようにこの部分の数字とこの部分の数字を変化させることで選択肢とかそういった繰り返しの始まりの位置と終わりの位置を制御することができます。 しかも、例えば、この date というfunction を使ってあげることによって例えば、この選択肢は明日になる7日が表れます。その次の日になれば8日が表れてその後ずっと続いていくという形になります。このように while の構文というのと例えば date という function 等を組み合わせることによって常に同じ回数繰り返すのではなくてその場その場に応じて繰り返し回数であったりとかを変化させることもできるので非常にこの while 構文は高度に様々なことを制御することができるということですね。もう1つ while 構文で大切なのがこの2つの数値ですね、所謂、変数ですけどその間にあるこちらです。これもことを比較演算子というのですが今ここでは、この記号を使っています。これは所謂、左辺と右辺を比べた時に右辺の方が左辺より大きい以上という意味の記号です。実はこの他にも様々な記号を使うことができます。例えば、この>=というこの=を消してみましょう。そうしますと、画面を再読み込みしますとこのようになります。1、2、3、4、5ということでさきほどまであった6日が無くなっています。これはどういう記号かといいますと以上、含むではなくて含まない、より上という演算子この記号になっているわけです。 これのことを比較演算子というのですけど種類を見ていきましょう。こちらが while 構文で使える比較演算子となります。先ほどまで使っていたこの「以上」という記号です。これ、数学や算数等ではこのような>記号の下に=が重なった記号でおなじみだと思うのですがプログラムの世界ではこの記号が使えませんので、かわりに=を右側に出した、こちらの記号が使われます。同じく、「以下」という意味の<記号も=を右側に出してこのような記号に変わります。その後使った、「より大きい」というのは数学のこの不等号と同じ書き方です。同じく「より小さい」というのもあります。後、while 構文ではあまり使われることが多くないのですが「等しい」という意味の所謂、等号これは=という記号を2つ重ねた形で書いていきます。そして「等しくない」という、所謂not equal という記号はびっくりマーク、!マークと=を組み合わせた記号で書いていきます。これらの記号はこの後紹介する if 構文というものでよく使われますのでこれも出てきた時に改めて紹介したいと思います。まず、while 構文でよく使われる物としておぼえていただきたいのがこちらの「より大きい」「より小さい」そして[以上」と「以下」というこれらの比較演算子です。 これをうまく活用することで様々な繰り返し構文を使うことができます。例えば、今度はこの日付のリストを逆にしてみたいと思います。つまり、5日から始まって4、3、2、1というふうに、並ぶようにしましょう。どうするかといいますとまず、最初の数値というのが今回はまた date の j になります。date の j は今6なので5から始める場合にはこれを−1します。そして、while 構文の中は1日までということなので今度はこの記号を使って1以下とします。そしてここは変わりません。ただし23行目が変わるので気を付けてください。23行目はこのように変わります。day −1です。少し詳しくこの後紹介しましょう。まずは動きを見てみます。こちらサファリを再読み込みしますとこのように5、4、3、2、1と言う形で日付けがさかのぼっていきます。では、少し動きをみてみましょう。まず、$day というのは date の j つまり6−1で5から始まります。そしてwhile 構文によってday が1よりも上の場合にこの繰り返しが起こるということなので最初の条件である5はクリアしています。そして5日が表示されます。次なんですが、ここで5−1、つまり4にしたものを day に記憶させます。 そして endwhile で19行目に戻ります。4になりましたが、まだ1よりも大きいのでもう1度繰り返し画面に出力されて4日が出力されます。−1で3、そして、3日−1して2日さらに1日が表示されます。そして次に1−1で0が day にこちら記憶されるのでendwhile で戻った時に0は1よりも小さくなっているのでこの while の中身が無視されて、select の閉じたタグが出力されると言うわけです。注意しなければいけないのがこの while 構文の比較演算子をこの23行目に書いているこの day という変数を変化させる場所がバランスが一致していないとおかしな動きになります。例えば、この day を day+1 としてしまいましょう。そうすると このプログラムは再読み込みをすると このようなことが起こります。画面が読み込み中のままずっと繰り返されています。そして、ここをみていきますと残念ながらクリックしても反応がありません。そしてブラウザは反応を返せなくなっています。これは、この後 web サーバーがタイムアウトとして処理をおとすかもしくは、この web ブラウザを強制するまでこのプログラムを終了させることができなくなります。 なぜこのようなことが起こったのかといいますとこちら day の条件が1以上となっています。そして最初が6−1なので5です。ここで、23行目でこの day が変化するのですけどその時に5+1で6になってしまいます。そして19行目に戻ります。それは1よりも上なので option が出力されて次の行は6+1で今度は7になります。ということで while まだ1よりも上ということで何度も何度も繰り返すのですが何回繰り返してもこの day という変数は1より小さくなることがありません。そのためこの while は終わりどころを無くしてしまってずっと繰り返し処理を行なってしまうという形になっています。このことを無限にループするということで無限ループなどと呼びますが非常によくある典型的なプログラムのミス所謂、バグと呼ばれるものになります。是非このバランスを気をつけてこの条件とそして、こちらその条件に使われている変数を変化させる場所をきちんと終わらせられるように作り込まないといけないので気をつけてプログラムを作ってみてください。この while という構文は様々なfunction と組み合わせたりですとかこの終了の条件もしくはこちらの最初の条件を複雑に組み合わせることで様々なプログラム処理が行なえますので是非使いこなせるようになってみてください。

PHP入門

このコースでは動きのあるWebサイトでショッピング、友人との写真を共有、キーワードによる情報検索など便利な仕組みを作るための技術であるPHPについて解説します。これまでプログラミングに触れたことがない方でも、ちょっとしたプログラムを自分で作ることができるようになります。

4時間56分 (29 ビデオ)
現在、カスタマーレビューはありません…
 
ソフトウェア・トピック
価格: 3,990
発売日:2014年01月29日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。