- 2012-06-10 (Sun) 10:25
- PHP
梅雨に入りました。空気が湿っていますね。
今年は例年通りに暑い夏になりそうだという予想みたいです。節電が呼びかけられていますが、体調が悪くならない程度に冷房を抑え目にしたいものです。
今日は演算子の4回目、比較演算子を紹介します。
比較演算子
比較演算子は、「左辺の値と右辺の値を比較してどうかを、その結果に応じた真偽の値を返します。比較演算子も論理演算子と同様に条件式で利用されます。
例えば、変数Aと変数Bを比較した場合、AがBより大きいとき、逆にAがBより小さいとき、あるいは、AとBが同じであるとき、などのように両方の値を比べて、それが正しい(真)、または正しくない(偽)という2つのどちらかを返します。
比較演算子には以下の9つがあります。
記述 比較
$a == $b等しい
$a === $b 等しい(型も同じ)
$a != $b 等しくない
$a <> $b 等しくない
$a !== $b 等しくない(型も同じでない)
$a < $b より少ない
$a > $b より大きい
$a <= $b ~以下
$a >= $b ~以上
一般に使われている等号や不等号の組み合わせになります。また、「!」は否定の意味を表します。
同じだという意味には「==」と「===」があります。前者の「==」は、値が等しいという事です。後者の「===」は、値と値の型の両方が等しいという意味合いです。
例えば変数Aと変数Bの2つの値には以下の値が代入されているとします。
$A = 10; (数値の10を代入)
$B = "10"; (文字列の10を代入)
そこで、「$A == $B」という処理であれば、この場合は真になります。値としてはどちらも「10」なので同じだと判断します。
次に、「$A === $B」という処理であれば、この場合は偽になります。値はどちらも「10」であるが、一方は数値の型で、他方が文字列型であるからです。つまり、値のデータ型が異なるので正しくないという判断になります。
否定でとなる「!=」と「<>」は同じ意味ですが、「!=」と「!==」の意味は「等しくない」ということですが、細かくなると異なります。前者は値のみが等しくない時で、後者は値は等しくても型が等しくないという意味合いまで持ちます。
例で見てみましょう。
変数$aには数値の「10」、変数$bには文字列の「10」を代入しています。IFステートメントの最初の条件は「左辺と右辺の値と型の両方が等しい時」となっています。これは満たされていないので、次のelse ifステートメントの処理を行います。2つ目の条件では、「左辺と右辺の値が等しい時」となりますので、これは満たされます。つまり、「真」となるので、その中のechoの処理が行われて、画面に出力されます。
この例では、変数$cに数値の「10」を代入しています。ifステートメントでは、変数$cが「100」でなければという条件になっています。つまり、この条件は満たされているので、その中のechoの処理が行われます。もしも、ifの条件が「$c != 10」となると「変数$cは10でなければ」ということになり、この場合は偽となり、elseの処理を行います。
比較演算子もプログラムでは頻繁に使われます。考えは分かり易いですが、値と型の両方を条件にするのか、しないのかを見極めて使い分けることは覚えておきたいものです。
今年は例年通りに暑い夏になりそうだという予想みたいです。節電が呼びかけられていますが、体調が悪くならない程度に冷房を抑え目にしたいものです。
今日は演算子の4回目、比較演算子を紹介します。
比較演算子
比較演算子は、「左辺の値と右辺の値を比較してどうかを、その結果に応じた真偽の値を返します。比較演算子も論理演算子と同様に条件式で利用されます。
例えば、変数Aと変数Bを比較した場合、AがBより大きいとき、逆にAがBより小さいとき、あるいは、AとBが同じであるとき、などのように両方の値を比べて、それが正しい(真)、または正しくない(偽)という2つのどちらかを返します。
比較演算子には以下の9つがあります。
記述 比較
$a == $b等しい
$a === $b 等しい(型も同じ)
$a != $b 等しくない
$a <> $b 等しくない
$a !== $b 等しくない(型も同じでない)
$a < $b より少ない
$a > $b より大きい
$a <= $b ~以下
$a >= $b ~以上
一般に使われている等号や不等号の組み合わせになります。また、「!」は否定の意味を表します。
同じだという意味には「==」と「===」があります。前者の「==」は、値が等しいという事です。後者の「===」は、値と値の型の両方が等しいという意味合いです。
例えば変数Aと変数Bの2つの値には以下の値が代入されているとします。
$A = 10; (数値の10を代入)
$B = "10"; (文字列の10を代入)
そこで、「$A == $B」という処理であれば、この場合は真になります。値としてはどちらも「10」なので同じだと判断します。
次に、「$A === $B」という処理であれば、この場合は偽になります。値はどちらも「10」であるが、一方は数値の型で、他方が文字列型であるからです。つまり、値のデータ型が異なるので正しくないという判断になります。
否定でとなる「!=」と「<>」は同じ意味ですが、「!=」と「!==」の意味は「等しくない」ということですが、細かくなると異なります。前者は値のみが等しくない時で、後者は値は等しくても型が等しくないという意味合いまで持ちます。
例で見てみましょう。
<?php
$a = 10;
$b = "10";
if($a === $b){
echo '$aと$bは値と型まで同じ';
}else if($a == $b){
echo '$aと$bは値だけ同じ';
}else{
echo '$aと$bは値も型も違う';
}
?>
$a = 10;
$b = "10";
if($a === $b){
echo '$aと$bは値と型まで同じ';
}else if($a == $b){
echo '$aと$bは値だけ同じ';
}else{
echo '$aと$bは値も型も違う';
}
?>
変数$aには数値の「10」、変数$bには文字列の「10」を代入しています。IFステートメントの最初の条件は「左辺と右辺の値と型の両方が等しい時」となっています。これは満たされていないので、次のelse ifステートメントの処理を行います。2つ目の条件では、「左辺と右辺の値が等しい時」となりますので、これは満たされます。つまり、「真」となるので、その中のechoの処理が行われて、画面に出力されます。
<?php
$c = 10;
if($c != 100){
echo '$cは10ではありません';
}else{
echo '$aは10です';
}
?>
$c = 10;
if($c != 100){
echo '$cは10ではありません';
}else{
echo '$aは10です';
}
?>
この例では、変数$cに数値の「10」を代入しています。ifステートメントでは、変数$cが「100」でなければという条件になっています。つまり、この条件は満たされているので、その中のechoの処理が行われます。もしも、ifの条件が「$c != 10」となると「変数$cは10でなければ」ということになり、この場合は偽となり、elseの処理を行います。
比較演算子もプログラムでは頻繁に使われます。考えは分かり易いですが、値と型の両方を条件にするのか、しないのかを見極めて使い分けることは覚えておきたいものです。
- Newer: PHP 演算子 (5)
- Older: PHP 演算子 (3)