CakePHP5入門【PHP言語の文法編②】選択
B美
A子
C菜
B美
ホームディレクトリの下の「html」ディレクトリを開いて、「test2.php」を右クリックしてから「L3afpadで開く」を選択します
(もちろん「Plumaで開く」でも良いわよ)
B美
<?php
$a = 5; $b = "Hello"; if ($a == 5) { echo '$aは'.$a.'です。'; } echo "<br /><br />"; if ($b == 'hello') { echo '$bはhelloです。'; } else { echo '$bはhelloではありません。'; } ?> |
入力が終わったら「test3.php」というファイル名で保存すること
C菜
(URLは「localhost/test3.php」)
A子
変数$bの内容は「hello」じゃん
C菜
「H」と「h」は別物なのでは~?
B美
それを検証するために下記の赤字部分を追記してみて
<?php
$a = 5; $b = "Hello"; if ($a == 5) { echo '$aは'.$a.'です。'; } echo "<br /><br />"; if ($b == 'hello') { echo '$bはhelloです。'; } elseif ($b == 'Hello') { echo '$bはHelloです。'; } else { echo '$bはhelloまたはHelloではありません。'; } ?> |
入力したら上書き保存して、ブラウザを更新してね
↓
C菜
B美
1.「if」の後ろにあるカッコ内の条件判断が「true(真…命題が正しい)」であれば、そのすぐあとのブロック(波カッコで囲まれている部分)が実行される
if (条件式) {
条件式がtrueのとき、実行; } |
2.「if」の後ろにあるカッコ内の条件判断が「true(真…命題が正しい)」であれば、そのすぐあとのブロック(波カッコで囲まれている部分)が実行され、「false(偽…命題が正しくない)」である場合は「else」の後ろのブロックが実行される
if (条件式) {
条件式がtrueのとき、実行; } else { 条件式がfalseのとき、実行; } |
3.「if」の後ろにあるカッコ内の条件判断が「true(真…命題が正しい)」であれば、そのすぐあとのブロック(波カッコで囲まれている部分)が実行され、「false(偽…命題が正しくない)」である場合、次に「elseif」があればその条件を判断する
if (条件式1) {
条件式1がtrueのとき、実行; } elseif (条件式2) { 条件式1がfalseで、条件式2がtrueのとき、実行; } else { 条件式1も条件式2もfalseのとき、実行; } |
あ、「elseif」はいくつでも書けるから、上記の3分岐だけじゃなく4分岐でも5分岐でも作れるわよ
【パターン2】
【パターン3】
C菜
B美
比較演算子 | 意味 | |
---|---|---|
① | == | 値が等しい |
② | === | 値と型の両方が等しい |
③ | != | 値が等しくない |
④ | !== | 値または型が等しくない |
⑤ | < | 左辺が右辺より小さい |
⑥ | <= | 左辺が右辺以下 |
⑦ | > | 左辺が右辺より大きい |
⑧ | >= | 左辺が右辺以上 |
ほかにもあるんだけど、このくらいを知ってれば十分よ
結局のところ、②と④を無視すれば、Excelのif関数で使う比較演算子と大差ないわね
C菜
B美
$a = 123;
$b = "123"; |
…とあった場合、$aは「整数型」で、$bは「文字列型」になるの
んで、「$a == $b」は「true」になるし、「$a === $b」は「false」になる(型が異なるから)ってわけ
A子
例えば「条件式1 かつ 条件式2」とか「条件式1 または 条件式2」って感じ…
B美
論理演算子 | 意味 | |
---|---|---|
NOT | ! | 否定(~ではない) |
AND | && | 論理積(~ かつ ~) |
OR | || | 論理和(~ または ~) |
あ、演算子には優先順位があるから注意してね
(カッコが最も優先されるのは数学と一緒だから、悩んだらカッコで囲めば良いんだけどね)
余談だけど「||」で使っている「|」という文字は、キーボードの右上にある[\]のキーを[Shift]キーと一緒に押します([Shift]+[\]ってことね)
C菜
B美
C菜の言う算術演算子にはとうぜん優先順位があるんだけど、論理演算子にも優先順位があるのよね
A子
「積」は掛け算で、「和」が足し算だから…
B美
「論理積(AND)」は「論理和(OR)」に優先するってこと
なお、もっとも優先されるのは「否定(NOT)」だけどね
A子
慣れるまでは大変そうだけど…(苦笑)
B美
そう、プログラムなんて所詮は「慣れ」だからね
それじゃ、次はちょっと実用的なプログラムを書いてみましょうか
さっきの「test3.php」を書き換えて、「test4.php」というファイル名で保存してね
<?php
$test_file = 'test1.php'; if (file_exists($test_file)) { $info_file = file_get_contents($test_file, false); $result = htmlspecialchars($info_file, ENT_QUOTES); echo nl2br($result); } ?> |
C菜
A子
ん?「if」の直後のカッコ内って条件式じゃないような?
B美
これって「file_exists($test_file) == true」と書いても良いんだけど、ムダだから書いていないだけよ
だって「if」の直後のカッコ内ってtrueかfalseかを判断するものであって、「file_exists」関数の戻り値って「true」か「false」の二択だからね
(そのファイルが存在するなら「true」、見つからなければ「false」が返ります)
C菜
ファイルの読み込みですよね~?
B美
んで、「htmlspecialchars」関数はHTMLで意味のある文字、例えば「<」と「>」を「<」と「>」という文字列に変換してくれるのよ
(通称「サニタイジング」)
A子
それも関数の一つ?
B美
テキストファイル中にある改行コード(改行文字)を「<br />」というタグに変換してくれるのよ
(ブラウザ上で改行したい場合、「<br />」タグが必要だからね)
そうねぇ、さっきのブラウザ上で右クリックして「ページのソースを表示」をクリックしてみて
↓
B美
C菜
「index.html」とか「info.php」とか…
B美
今回作成した「test3.php」の中で使っている変数($aや$b)の初期値についても、色々と変更して実行確認してみてちょうだい
(「試行錯誤」こそがプログラム学習の王道だからね)
さて今回はこれで終了よ
次回は「繰返し」処理について説明していくわね
C菜
「繰返し」処理って難しそうです~
A子
B美先生、分かりやすい説明を頼むよ
B美
そんなに難しくないから…多分(笑)
A子