- ベストアンサー
二つの条件が不等価の場合の記述
どうも連続でくだらない質問で申し訳ありません(^^; 変数aが不等価、もしくは変数bが不等価の場合の記述はどのようにすればいいのでしょうか。 $aが"あ"ではない場合、もしくは$bが"い"ではない場合に次の処理を実行する、という書き方をしたいのですが if($a!="あ" || $b!="い"){ } ではうまくいきませんでした。 ご教授、よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#2さんへのレスを見ました。ならやはり答えは簡単です。 両方「偽」になる条件は存在しません。 なので $aが"あ"の場合は偽:真:真 $aが"い"の場合は真:偽:真 $aが"う"の場合は真:真:真 です。 やりたいことは「どちらかが一致しない」ではなく、「どちらかが一致する」じゃないですか? なら if($a=="あ" || $a=="い" ) ではないでしょうか?
その他の回答 (3)
- Mizyu
- ベストアンサー率41% (245/593)
> ところで(条件A || 条件B)の真というのは、{}内の処理がされている場合が真でよろしいんですよね? おっしゃる通りです。 if (条件){ 条件が真の処理 }else{ 条件が偽の処理 } 一つ気になった点があります。 両方が「偽」ということは$aが"あ"であり、$bが"い"である場合です。 例えば、$aが"う"で$bが"え"の場合は両方「真」ですので、if条件は真となります。 この認識で大丈夫でしょうか? また、両方「真」という条件がないのであれば if(!($a!="あ" && $b!="い")) という記載もできます。
もしかして・・・なんですが、forループの中で、判定させるための$aと$bを初期化してから、使い始めていないために、判定で使用している$aや$bが、使っていないときに、その前のループでの値をそのまま保持しているなんて事はないですよね・・・ 間違いがありましたらご指摘ください。 ではでは☆
お礼
ご回答頂き、ありがとうございます。 値の保持はないんですが、間違いに気づきました。 a!="あ" || b!="い" ではなく a!="あ" || a!="い" でした。でも関係ないですよね??
- Mizyu
- ベストアンサー率41% (245/593)
うまくいかないとは具体的にどの条件のときに発生しますか? 条件A、条件Bがあったとします。 (条件A || 条件B)はどのようになるか? 条件A:条件B:(条件A || 条件B) 真:真:真 真:偽:真 偽:真:真 偽:偽:偽 となるはずです。
お礼
ご回答ありがとうございます。 ということは、この式であってるということですよね? 条件Aだけ,条件Bだけで試すと思い通りの処理をしてくれるのですが、A||Bとするとうまくいきません。 for文の中でAとBを回しているので両方真はありえないのですが、 真:真:? 真:偽:真 偽:真:真 偽:偽:真 になってしまっている状態です。 ところで(条件A || 条件B)の真というのは、{}内の処理がされている場合が真でよろしいんですよね?
お礼
ご回答ありがとうございます。 頭がうにになってきました。 一応結果としましては if($a!="あ" && $a!="い" ) で思い通りに動きました。 >やりたいことは「どちらかが一致しない」ではなく、「どちらかが一致する」じゃないですか? はい、ここの考え方が間違っていました。 $a != "あ"は、aがあではない場合すでに一致、つまり真になっているんですよね。 うまく説明できませんが(^^;ここでごっちゃになっていたようです。 どうもありがとうございました。