2015年9月22日

PHP if構文その6 〜文字や変数との比較〜

«
»

Pocket

今回はif文を使った文字や変数との比較について書きたいと思います。
 
まずはサンプルプログラムを見てみましょう。
 


<?php

$box = "aaa"; //文字を扱うときはダブルクォーテーションを使う

if ($box == "aaa") { //変数の中身がaaaという文字である場合 
    echo "string is aaa.";
}else{
    echo "string is not aaa.";
}

実行結果

if 文字列 比較

解説

まず、PHPで文字列を扱う場合はダブルクォーテーション「”」または
シングルクォーテーション「’」で囲います

 
シングル、ダブルの違いについてはこちらを御覧ください。

PHP ダブルコーテーションとシングルクォーテーションの違い

 
当然、条件判定の部分でもif ($box == “aaa”) として、
aaaの前後にはダブルクォーテーションをつけます。
 
プログラミングでは数値と文字列の扱いが違いますので気をつけて下さい。
 
もしダブルクォーテーションを忘れてしまっていたらどうなるでしょうか。
次のサンプルを見てみましょう。

サンプルプログラム


$box = "aaa"; 

if ($box == aaa) { //ダブルクォーテーションを忘れた場合 
    echo "string is aaa.";
}else{
    echo "string is not aaa.";
}

実行結果

php Notice: Use of undefined constant エラー

解説

上図の様にエラーとなってしまいました。(正確にはNoticeなので通知ぐらいですが)
 
エラーの読み方はどこかで書いていきたいと思いますが、
分解するとこんな感じです。

1.Notice: Use of undefined constant aaa – ⇒ 通知:未定義の定数aaaの使用について

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";
}

実行結果

PHP if 変数 比較

解説

このプログラムでは変数同士の比較を行っています。
といってもやっていることは、その変数の中身同士を比較しているだけです。
 
aaaとaは同じではありませんので、box1とbox2の中身の比較結果は
not sameということになります。
 
ちなみに、box2とbox3は同じaという文字をダブルクォーテーション、
シングルクォーテーションで囲ったもの
ですが、この場合、
中身がaであることに違いはないので、sameとなります。

まとめ

・ifでは文字列や変数同士の比較も可能
・文字列を扱うときにはダブルクォーテーションを忘れずに
・エラーメッセージの読み方を抑えておきましょう

【関連する記事】