条件分岐での排他的な論理和について

このQ&Aのポイント
  • $aが 'abc' 'xyz' 以外の時に実行したい場合の条件分岐。
  • if文で書く最も処理が高速でスマートな方法教えて下さい。
  • 部分一致ではないので正規表現は使いたくありませんが、比較演算子を使うより正規表現を使ったほうが処理が高速な場合は正規表現も有りでお願いします。
回答を見る
  • ベストアンサー

条件分岐での排他的な論理和について

$aが 'abc' 'xyz' 以外の時に実行したい場合の条件分岐。 ついついこんな風に書いて間違えてしまいます。 if( $a ne 'abc' || $a ne 'xyz' ){...} 上記だと論理和左側のneが真を返すので、右側の条件を見てくれないから仕方なくunlessを使います。 unless( $a eq 'abc' || $a eq 'xyz' ){...} でも私、unlessが嫌いなんです。 if文で書く最も処理が高速でスマートな方法教えて下さい。 部分一致ではないので正規表現は使いたくありませんが 比較演算子を使うより正規表現を使ったほうが処理が高速な場合は正規表現も有りでお願いします。

  • Perl
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • _kappe_
  • ベストアンサー率68% (1522/2216)
回答No.1

ifで書くなら if( $a ne 'abc' && $a ne 'xyz' ){...} でいいんじゃないでしょうか。

nerumako
質問者

お礼

お礼を忘れておりました。回答ありがとうございました。

その他の回答 (1)

  • watanabe04
  • ベストアンサー率18% (295/1597)
回答No.2

ちょっと文法がわかんないが、 if( $a ne 'abc' && $a ne 'xyz' ){...} でいけます。 「abc以外かつxyz以外」という条件ですね。

nerumako
質問者

お礼

お礼を忘れておりました。 回答ありがとうございました。

関連するQ&A

  • 排他的論理和

    排他的論理和を2回演算すると、元に戻ることを下記の例で確認しなさい。 回答は下記の<2進数>と<16進数>の部分を書き換えなさい。 (1)平文と鍵から暗号文を作りなさい 【平文】  ABC  <16進数> <2進数> 【鍵】   XYZ  <16進数> <2進数>  ---------------------------- 【暗号文】    <16進数> <2進数> (2)暗号文と鍵から平文が復元できることを示しなさい 【暗号文】    <2進数>  <16進数> 【鍵】   XYZ  <2進数>  <16進数> ---------------------------- 【平文】  ABC  <2進数>  <16進数> ヒント:(1)は、平文と鍵を16進数と2進数に書き直し、2進数で排他的論理和を計算し、それを16進数に直せば暗号文を定義できる。平文、鍵、暗号文はどれも16進数6桁になる。 (2)も同様に暗号文と鍵から平文を生成する。 最後に(1)の平文と(2)の平分を比較してみなさい。違っていればもう一度見直しなさい。 どなたか教えてください。 さっぱりわからないです。

  • 条件分岐(if)について

    条件分岐(if)についてお聞きしたことがあります。 例えば if($a == 'A' || $a == 'B'){ 処理 }else if($a == 'C' || $a == 'D' || $a == 'E'){ 処理 }............... といった条件分岐があったとて、お聞きしたいことが2点あります。 ・条件分岐この後も数十個続いたとします。その場合もelse ifで一つ一つ 条件を書かなければならないのでしょうか? ・条件式if($a == 'A' || $a == 'B'....)が長くなる場合プログラムが見にくくなるので 別途に条件式を書いておいてif文の所では($a == ◯)といったように簡潔に書くことは できないのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 条件分岐式。

    現在条件分岐式について考えているのですが、できないので教えてください。 入力フォームで、画像の入力が合った場合は表示し、画像の入力が無かった場合は、 <IMG src=*** の記述もしないようにしたいのです。 (何もないとバッテンが出てしまうため。) $GAZOU_1=$FORM{'GAZOU1'}; $GAZOU1="<IMG SRC='$GAZOU_1'>"; if ($GAZOU_1 eq ''){ $GAZOU1 eq ''; } elsif($GAZOU_1 ne ''){ $GAZOU1 eq $GAZOU1; } としてみましたがダメでした。 どこが違うかご指摘お願いします。

    • ベストアンサー
    • CGI
  • 論理演算子について

    論理演算に使う「or」なんですが、制御構文ifと組み合わせて以下のような使い方をしてみました。 $data01='aaa'; $data02='あああ'; $data03='test'; if ($data01 =~ m/aaa/ or $data02 =~ m/あああ/ or &data03 =~ m/test/){ 特定の処理; } このorによる論理演算ははどこまでできるのでしょうか? 上のスクリプトは問題なく動いていますが、ちょっと不安です。 専門書を見ても、orによる論理演算は<条件1 or 条件2>としか書いてなく <条件1 or 条件2 or 条件3 or ・・・>と書いても大丈夫なのでしょうか? いくつもの比較はorを使わないほうがよろしいとは思うんですが、このorが便利なのでこれで済むなら使いたいと思います。

  • 条件分岐の書き方・・・

    まだプログラミングをはじめて間もない者です。 私は、単純な条件によって処理を分岐させる場合、 たとえば、 if (!empty($hogehoge)): //処理 endif; と書かないで if (empty($hogehoge)): return; endif; //処理 のように、条件に当てはまらない場合、先に返してしまい、 その後に処理を書くようにしています。 理由は、入れ子がどんどん複雑になってしまうのをさけるためなのですが、 熟練したプログラマーの方から見て、 このようなコーディングはどうなのでしょうか? ぜひご指導お願いします。

    • ベストアンサー
    • PHP
  • 論理和演算子を使って、三項演算子のような簡易分岐ができるようなコードを

    論理和演算子を使って、三項演算子のような簡易分岐ができるようなコードを書けるという テクニックがあるというのを本で読んで試して見たのですが、うまくいきません。 本に書いてあるコードはこんな感じです。 bがなければ、cのプロパティであるdを、それもなければ、500をaに代入する。 bを削除するとdが代入されると思ったのですが、エラーになってしまいます。 //var b = 1; var c = new Object(); c.d = 2; var a = b || c.d || 500 ; どうやったらうまくいきますでしょうか?よろしくお願いします。

  • 正規表現を使い、URLで条件分岐したいのですが…

    正規表現を使い、URLで条件分岐したいのですが、 うまくいかないので、教えてください。 <やりたいこと> http://ドメイン/page1.html http://ドメイン/page2.html       : のページの時のみ、 という条件分岐をしたい。 <現状> if($_SERVER['REQUEST_URI']=="/page1.html"){ とするとうまくいくのですが、 これを任意のpage○で対応したい $_SERVER['REQUEST_URI']=="^/page*.html$"){ としたけど、ダメでした。 どう書けば、よいでしょうか?

    • ベストアンサー
    • PHP
  • Excel VBA 条件分岐のスマートな書き方

    すみません。すごく初歩的な質問なのですが、 Excel VBAで以下のような条件分岐をさせたい場合、 もっとスマートな書き方できませんか? 命題 AとBに対して if not A then 処理X end if if not B then 処理Y end if if not(A and B) then 処理Z(この処理の中には処理Xと処理Yの結果が含まれている) end elseifを使った書き方が思い浮かばず、 同じことを何度も書いているようで、もっと上手に書けそうな気がしまして・・・ どなたかご教示頂けたらと思います。

  • 論理演算の問題です

    論理演算の問題です if( !( a > 0 && b == 0) ) は、 if( a <= 0 || b != 0 ) になりますか? また、 if( !( x > 0 || y < 0 ) は、 if( x <= 0 && y >= 0 ) になりますか? 遅い脳みそで考えました。 このような、論理演算を分かりやすくまとめられたサイトをご存知でしたら、 どなたか教えてください。 お願いします。

  • switchでの条件分岐の書き方を教えて下さい。

    こんにちは。 いつもお世話になっております。 またわからない事が出てきてしまったので、どうか ご指導よろしくお願いいたします。 簡単な検索機能をつくりたくて、思考錯誤 しております。 フォームからPOSTで受け取る変数の数は 10個あります。 それぞれの変数が ””でなければ、受け取った 変数を元に、SQL文がかわってゆく。 という事がしたいのです。 10個もあるので、たとえば 変数が$_POST["a"]から$_POST["j"]まであった時に if文を使うとすると if($_POST["a"] != "" && $_POST["b"] == "" && $_POST["c"] != "" (略)){ $stt = "検索したい予定のSQL文1"; }elseif($_POST["a"] == "" && $_POST["b"] != "" && $_POST["c"] != "" (略)){ $stt = "SQL文2"; ・ ・ ・ と言う風に、ものすごいにはなると思うのですがifを つなげていけば良いのかな、と思うのです。 PHPの基礎HPなどを検索してみると、SWITCHを 使えば、多岐に分岐するIF文を、見やすくできる、 と書いてあったので、使ってみたいのですが、書き方の 説明によると switch(変数){ case 値1:  条件を満たす時の処理1 break; case 値2:  条件を満たす時の処理2 default: } と紹介してあったのですが、今回わたしがしたい場合の 条件分岐だと、変数は一つではなく、ある変数は空でこの変数は値が何か入っていて、またもう一つの変数は 空で・・・の時は、このSQL文、というように させたい場合には、switchでどうかけばよいのか わからないのです。 それとも、こういう条件分岐の場合は、switchを 使うべきではないのでしょうか・・・? どうかご指導よろしくお願いいたします。  

    • ベストアンサー
    • PHP

専門家に質問してみよう