このサイトはPHPを独習する際に作成したスクリプトを基に、プログラム言語初心者のための入門講座として作成しました。PHPは初心者に親しみやすく、解りやすいプログラム言語です。これからプログラムを学ぶ人の参考になればと思います。
4-1 IF+論理演算子 and or xor の使い方
論理演算子は2つの条件を並べて判断をだします。A and B は「AとBのどちらの条件にも合うこと」、これは解りやすいですね。 A or B は「A か B かどちらか一方の条件に合うこと」と考えがちですが、「A又はBのどちらかの条件に合うこと、或いは両方の条件に合うこと」なのです。 A xor B は「Aか又はBの条件に合うこと、両方は含まない」という意味です。 A と B がどちらも真 (TRUE) あるいは、両方が同じ場合はダメつまり (FALES) になると言うことです。 日本語の「〜か〜」に近いのは xor の方ですね。 ここで私の最初の間違えは条件の書き方でした。こんな書き方をしてしまったのです。
if($word == "犬" or "猫"){
正しくはこうです。
if($word == "犬" or $word =="猫"){
4-2 IF を組み合わせもっと複雑に
2つの判断は理解できたと思います。今度は3つを組み合わせて見ましょう。3匹が犬か猫かなるので、組み合わせは全部で8通りです。IF を入れ子にすることで判断の仕組みを作ります。タブの使い方と{ }の場所に注意。
<?php if(条件1and 条件2) { //2つの条件に合い if(条件3) { //しかも3番目の条件にも合う echo 結果; //場合に結果を出す } else { echo 結果; //条件3には合わない } } else { echo 結果; //条件1and 条件2に合わない } ?>
IFはいくつでも入れ子にすることができるのですが、あまり多く重ねてしまうと後で見た時にとても解りづらくなります。後に出てくる switch 等とあわせて考え、合理的な作り方をしなければなりません。
⇒こんな感じ
4-3 3つ以上の条件を組み合わせてみよう
この演算子は3つ以上の組み合わせも簡単にできます。and で条件を並べればすべてが満たされたときに、結果を出します。xor は複数条件のどれか一つだけ、or は1つ以上条件が合えばいいので、xor を先に持ってくる必要があります。
<?php if(条件1 and 条件2 and 条件3 and 条件4 and 条件5) { //5つの条件に合う echo 結果; } elseif(条件1 xor 条件2 xor 条件3 xor 条件4 xor 条件5) { //どれか1つだけの条件に合う echo 結果; } elseif(条件 1or 条件2 or 条件3 or 条件4 or 条件5) { //1つ以上の条件に合う echo 結果; } ?>
すべてか、1つだけか、あるいは2つ以上OKがあるのか判断できるはずでした。が実際はうまくいきません。
⇒こんな感じ
これでは正しく判断できません。「こんな感じ」を試すとうまく動いていそうなのですが、3つにチェックを入れた場合にエラーが出るのです。「一つだけ」と表示されます。XOR がおかしな判断をしてしまうのです。
XOR は左から右へ2つを比較しながら結果を出して行きます。 例えば(条件1 XOR 条件2 XOR 条件3)と3つを比較します。 3つの条件がすべてOK、つまり(TRUE)な場合、先ず条件1と条件2を比較し同じなので、NO つまり (FALES) を返します。
次に1と2の結果である NO(FALES) と条件3の結果OK(TRUE)を比べます。二つは違うのでOK(TRUE)を出すのです。
奇数の時は必ずこうなるようです。XOR は2つの条件の時のみ、使った方がいいですね。
|