第2回 PHPの基礎の基礎 - PHP基礎講座

PHP基礎編

Saity先生のPHP基礎講座

Lecutures on PHP

第2回 PHPの基礎の基礎 (その5)

 このエントリーをはてなブックマークに追加

変数って?

  • ところで、先ほどのプログラムは、以下のようにも書き換えても、同じ表示結果になるんだ。
<?php
$now 
date("現在の日時は、Y年m月d日 H時i分s秒です。");
print(
$now);
?>
  • $now? $(ドル)= 金額、お金・・・!?
  • ははは。このドル記号はお金を表しているんじゃないんだ。PHPでは文字の左に「$」記号をつけると、変数として扱われるようになるんだよ。
  • 変数って?
  • 変数というのは、文字とか数値などの値を、PHPが一時的に記録しておくために使われるものなんだ。
  • ふーん、記録するのかぁ。ファイルみたいなものなのかな・・・。
  • ファイルの場合はパソコンの電源を切っても残っているよね。変数に入れた値は、ずっと記録されているわけじゃないんだ。そのプログラムの終わりまでいくと、要するに一番下の「?>」のところで消えちゃうんだ。その代わり、読み書きはとても速い。
  • 変数は使い捨て、ってことなのね。ところで、「$now = date(・・・」となってるけど、全然イコールな関係じゃないですよね?
  • ここでいう「=」は「代入」を意味するんだ。「=の右の値を左に入れる」という意味なんだよ。だから、$now変数にはdate関数の戻り値が入ってる。
  • そっか!そして、3行目でその$now変数の値、つまりdate関数の戻り値を表示しているから、同じ表示結果になるのね!!

ifを使って条件分岐

  • ちょっと駆け足だけど、関数について深く理解する前に、条件分岐の方法を覚えておこう。
  • 条件分岐。えっと、条件を分岐するというぐらいだから、たとえば「もし雨が降っていたら傘を持っていく、雨が降っていなかったら傘を持っていかない」みたいなことかな。
  • そうだね。だいたいそんな感じだよ。条件分岐は、プログラムを組む上で最も基本的な要素の一つなんだ。
  • これから「もし~だったら・・・する」っていうのを、プログラムで書いていこうということね。
  • その通り。条件分岐するには「if」、「elseif」、「else」の3つの構文を使うんだ。じゃあ、例として以下のプログラムを見てみよう。
<?php
if (date("H") > 12) {
  print(
"お昼をすぎました");
} else {
  print(
"お昼前です");
}
?>
  • 「H」はdate関数のマニュアル(http://www.phppro.jp/phpmanual/php/function.date.html)を見ると・・・、24時間表記での「今の時間」が戻り値として返ってくるのね。
  • そうそう。マニュアルを読む癖がついてきたみたいだね。ifの構文は、次のように考えると分かりやすいよ。
if (この条件に当てはまったら) {
  このコードを実行する
} else {
  上記の条件に当てはまらなかったら、このコードを実行する
}
  • 今回のプログラムは、まず初めの条件は、「(date("H") > 12)」となっているわ。「date("H")」で24時間表記の今の時間が返ってくるはずだから、要するに「今の時間が12時以降だったら」という事なのかしら。
  • 惜しい!「以降」じゃなくて「より大きく」だね。普段会話とかではあまり気にしていないけど、「より大きく(>)」と「以降(>=)」の違いは大きいから気をつけてね。
  • ふーん。ということは、正しくは、条件は「今の時間が12時よりも大きければ」ということか。実行されるコードは「print("お昼をすぎました");」だから、この場合は「お昼をすぎました」と表示されるわけね。それで、次の部分では、条件が「今の時間が12時か、12時よりも小さければ」で、この場合は「お昼前です」と表示されるんじゃないかな。
  • 時間は整数として扱われるから、「今の時間が12時よりも大きければ」というよりも「13~23時ならば」と考えて、「今の時間が12時か、12時よりも小さければ」というよりも「0~12時ならば」と考えよう。
  • そっか、確かにそのほうが分かりやすいですね。
  • じゃあ、もっと難しい問題に挑戦してみよう。次のコードを見てみよう。
<?php
if (date("H") > 18) {
  print(
"こんばんはです!");
} elseif (
date("H") > 11) {
  print(
"こんにちはです!");
} elseif (
date("H") > 6) {
  print(
"おはようございますです!");
} else {
  print(
"夜更かししすぎです!");
}
?>
  • タイプミスに気をつけてね!
  • なんか見づらいコードだわ。「(」とか「{」とかばっかりで。。。
  • そうだね。でも、「(」や「{」にもきちんと意味があるんだ。さっきもちょっと触れたけど、「(」と「)」で挟まれた部分は「条件」を表し、「{」と「}」で挟まれた部分は「実行するコード」を表しているんだ。elseifが加わった場合の、ifの構文は、以下のように考えるとわかりやすいよ。
if (この条件に当てはまったら) {
  このコードを実行する
} elseif (上の条件に当てはまらなかったら) {
  このコードを実行する
} else {
  上のどの条件にも当てはまらなかったら、このコードを実行する
}
  • elseifは、何個も重ねられるし、また、elseifとelseが無くても動作するよ。
  • えっと、今回の場合は、まずはじめの条件が「date("H") > 18」となってるわ。ということは、今の時間が18時よりも大きければ、つまり19時~23時の場合、「こんばんはです!」と表示されるんじゃないかな。
  • そうそう、その調子。次のelseifでは、最初のifの条件に合わなかった場合に、elseifの条件に合うか判定されるんだ。よってこの場合は、「今の時間が12時から18時までの間」となるね。
  • なるほど!ということは、このプログラムだとこんな結果になるんですね!!

現在の時間を元に、表示される言葉が変わります。

  • 0時 ~ 6時 → 夜更かししすぎです!
  • 7時 ~ 11時 → おはようございますです!
  • 12時 ~ 18時 → こんにちはです!
  • 19時 ~ 23時 → こんばんはです!
  • そのとおり!ユキちゃん、だいぶ分かってきたじゃない!
  • へへ~。それほどでも。
  • PHPにはいろいろな構文があるけれども、まずはif構文をきちんと理解してね。
  • はーい。わかりました。でも、これってプログラムを書くのに役に立つの?
  • そうだなぁ。ほとんどの場合は、変数と関数、そしてif構文さえあれば、簡単なプログラムは書けるんじゃないかな。
  • そうなのかな・・・なんか、これだけだと出来ることも少なそう。
  • いや、プログラムはレシピ集みたいなもので、関数の組み合わせで表現していくんだ。例えば料理を作るときは、食材があって、それを煮たり焼いたり加工していきながら、食事を作っていくよね。PHPプログラミングも同じで、ユーザーからの入力とかURLアドレスによって、データベースからデータを取り出したり、データの加工をおこなったり、色々な処理をしたりしながら、ユーザーが求めるWebページを作っていくんだ。
  • ふむふむ。材料が少なくても、作る人次第ってことですね!
  • そうだね。とはいっても、いきなり最後まで作るのは難しいと思うんだ。だから、最初は焦らず急がず、必要なことから覚えていこう。
  • はーい☆
  • 画面の見た目は後からついてくるものだから、最初はプログラミングに集中しよう!
  • じゃあ、次回は何を教えてくれるんですか?
  • もう少し変数について詳しく理解しよう。たとえば、配列とかデータ型とか。そして、もう少し高度なプログラムの例として、占いプログラムでも作ってみようか!
  • 面白そう!私も頑張って追いついて行かなくちゃ!
  • Saity先生

本名:海原才人 アシアル株式会社所属

PHPスクール講師。同時に、現役システムエンジニアとしてシステム開発も行っている。

携帯電話でWebサイトが見られるようになった事をきっかけに、Webの普及の早さに驚愕し、Webプログラミングに興味をもつ。 その後、PHPによるWebプログラミングと出会い、その習得のしやすさと多機能さに魅了され、数多くのシステム開発をPHPでこなしてきた。 現在は、PHPの魅力とシステム開発で蓄積したノウハウをPHPスクールで多くの人に伝える事に熱意を燃やしている。

「教育において、教わる側が解からない事に罪はなく、教える側が興味を持たせられない事が罪だ」というのが講師としての信念。 生徒にPHPの面白さ・素晴らしさを伝えるため、魅力的な講義を展開する事に全力を注ぐ。

ご意見・感想フォーム

今回の「Saity先生のPHP基礎講座」への評価・ご意見があればご記入下さい。

評価:
ご意見・感想:

  



Pick Up Q&A

Q
セッションがいいのか、それともデータベースがいいのか教えて下さい。
 このエントリーをはてなブックマークに追加 
A
>ボタンをクリックしたら選んだ商品情報を持っておきたいと思っています。 そのくらいのことならセッションもしくはCookie(期限短め:場合によってはブラウザ閉じるまで)でいいんじゃないですかね。 #わ...

>>続きを読む

一つの目安として、ECサイトの購入情報など絶対に消えてはいけないものはDBに、カートなどの一時的に使用する情報や、ユーザに任意のタイミングで消去されても構わないものはセッションにと使い分けるといいでしょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)