今回はif文を使った文字や変数との比較について書きたいと思います。
まずはサンプルプログラムを見てみましょう。
<?php $box = "aaa"; //文字を扱うときはダブルクォーテーションを使う if ($box == "aaa") { //変数の中身がaaaという文字である場合 echo "string is aaa."; }else{ echo "string is not aaa."; }
まず、PHPで文字列を扱う場合はダブルクォーテーション「”」または
シングルクォーテーション「’」で囲います。
シングル、ダブルの違いについてはこちらを御覧ください。
当然、条件判定の部分でもif ($box == “aaa”) として、
aaaの前後にはダブルクォーテーションをつけます。
プログラミングでは数値と文字列の扱いが違いますので気をつけて下さい。
もしダブルクォーテーションを忘れてしまっていたらどうなるでしょうか。
次のサンプルを見てみましょう。
$box = "aaa"; if ($box == aaa) { //ダブルクォーテーションを忘れた場合 echo "string is aaa."; }else{ echo "string is not aaa."; }
上図の様にエラーとなってしまいました。(正確にはNoticeなので通知ぐらいですが)
エラーの読み方はどこかで書いていきたいと思いますが、
分解するとこんな感じです。
2.assumed ‘aaa’ :aaa は 間違っている (assumedは偽りの、装った)
3.in /Applications/XAMPP/xamppfiles/htdocs/if12.php on line 5 ⇒ if12.phpの5行目辺りだよ
そんなに厳密に理解しようとしなくて良いのですが、
まず見て欲しいのは「if12.php on line 5 」のところで、5行目辺りに(辺りに、が重要)
エラーがあることがわかります。
今回は aaa が間違っていると言ってくれたので
「あ、ダブルクォーテーション忘れた!」と気づけるわけです。
エラーメッセージの基本的な読み方(と英単語)を抑えておくとエラーが
早く解決できます。
<?php $box1 = "aaa"; $box2 = "a"; //こっちはダブルクォーテーション $box3 = 'a'; //こっちはシングルクォーテーション if ($box1 == $box2) { //box1とbox2の中身の比較 echo "same"; }else{ echo "not same"; } echo "<br>";//改行 if ($box2 == $box3) { //box2とbox3の中身の比較 echo "same"; }else{ echo "not same"; }
このプログラムでは変数同士の比較を行っています。
といってもやっていることは、その変数の中身同士を比較しているだけです。
aaaとaは同じではありませんので、box1とbox2の中身の比較結果は
not sameということになります。
ちなみに、box2とbox3は同じaという文字をダブルクォーテーション、
シングルクォーテーションで囲ったものですが、この場合、
中身がaであることに違いはないので、sameとなります。