• ベストアンサー

if文などで使用される条件式で、同じような条件をまとめる方法

$keyという変数には、aiueo、kakikukeko、sasisuseso、tatitutetoなどの文字列が入ると仮定して、if文でaiueo、sasisusesoの文字列の時のみ、実行させないようにしたい場合、通常は if ($key != "aiueo" && $key != "sasisuseso") {   処理 } としなければなりません。しかし、これだともっと条件が多くなった場合、非常に見づらくなってしまいます。 「$keyと言う変数が、○○、××、■■、・・・以外の値の時」という条件を各場合、もっと簡潔にまとめて書く方法って無いでしょうか? 例えば、if ($key != ("aiueo" && "sasisuseso"))みたいな感じで。 (switchを使う手もありますが、これは他の変数($a == 0など)に関する条件を組み合わせたい場合、面倒になるので) もし、方法などありましたら、教えていただければと思います。

  • PHP
  • 回答数3
  • ありがとう数5

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

  • ベストアンサー
  • masa6272
  • ベストアンサー率66% (93/140)
回答No.3

$cond=array("aiueo" => 1,"kakikukeko" => 1); if(empty($cond[$key])) { 処理 } というのは、どうでしょう? emptyの所はそのまま !$cond[$key] とも書けますが、こっちの方が意味が分かりやすいかも。 もし、このifがループの中で実行されるのでしたら、ループの外側で条件判定の配列を作った方がいいでしょう。また排除が必要な文字列が多くなった時、連想配列ですとあるかどうかの判定が一定時間でできます。整数キー配列ですと、ないことの判定は配列の要素全てを見に行く必要があります。 また、この方法ですと除外する文字列を外部ファイルから読むなどの処理もできます。

ikazuti
質問者

お礼

なるほど、このやり方は汎用性があって良さそうです。 ありがとうございます。

その他の回答 (2)

回答No.2

switch文では、こんな書き方もできます。 switch (true) {   case $key != 'aioeo':   case $key != 'sasisuseso':     処理     break;   case $key == 'aiueo':     処理     break;   default:     break; } 参考までに。

ikazuti
質問者

お礼

なるほど。処理が決まっているなら、そういうやり方もOKかもしれませんね。参考にさせていただきます。 ありがとうございました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

if(!in_array($key,Array('aiueo','kakikukeko','sasisuseso','tatituteto')))

ikazuti
質問者

お礼

ありがとうございます。

関連するQ&A

  • if文の条件式の書き方について

    現在VC++2005でプログラムを作成しています。 そこであるテキストファイルをテキストボックスに表示してからその表示されている内容の1行目をif文を使って判断するというものを作っています。 そこで、質問なのですがif文の条件を作るときに文字列として条件を入れたい場合はどのようにしたら良いのでしょうか? 現在は7:00ならばというものなのですが、読み込んだ文字列に7:00以外のものが入っていてもそのまま判断されてしまうのできっと条件式のところが問題だと思うのですが。 下に作成中のコードを書きますので、良かったらご教授お願いします。 ********************************************************* String^ ss; ss=textBox3->Text; ss=textBox3->Lines[0]; textBox5->Text=ss; String^ time; time=textBox5->Text; if (char time='7:00'){ MessageBox::Show("7時"); } else { MessageBox::Show("ミス"); } **********************************************************

  • php if文の条件式の書き方

    同じ変数に対する条件式ってまとめて書けないのでしょうか? if($hensu!=1 && $hensu!=20 && $hensu!=30){ ~~~~~ } みたいな条件が書きたい時に $hensu!=1 && 20 && 30 みたいな書き方はできないのでしょうか?上記の書き方ではダメですが。 なにか上の書き方よりスマートに書ける方法があれば教えて頂けないでしょうか。

    • ベストアンサー
    • PHP
  • If文の条件文の書き方

    お世話になります。 Excelでマクロを作成しております。 内容:  あるセルに、X<=300 というような条件を入れておきます。  ある値、たとえば、500 が来たときに、Xに代入して、  500<=300 という条件式を作り、それが、正しいか、正しくないか  の結果を求めたいと思っています。 このとき、if文の条件文は、値によって、変わらなくてはいけないので、 文字列の置き換え等をして、変数として条件文を作ると、「型が違います」 のエラーになります。 どのように条件文を作ればいいでしょうか?? hani = Cells(1,1).value 'セル1,1に、X<=300 が書かれています。 exp = Replace(hani, "X", 500) '"X"を500と置き換えます。 If exp Then Check = 0 Else Check = 1 End If よろしくお願いします。

  • if文の条件式について

    iPhone OS 3.0、Xcode 3.1.3という環境でobjective-cをベースとしてiPhone向けアプリケーションを作る研究をしています。 どちらかというとC言語の質問になりますが、if文で使う条件式にNSString型で宣言した文字列を使うにはどうすればいでしょうか? NSString *startArea = [[NSString alloc] initWithFormat:@"pt.x > 224 && pt.y < 100"]; というコードでstartAreaに代入されたpt.x > 224 && pt.y < 100という文字列をif文の条件式として使えればと思ってます。 ちなみに、、、 if( startArea ){ 実行したい命令 } という記述をしたところ、ビルドエラーは発生しませんでしたが条件が無視されてしまいました。 他にコードの間違いがあるかもしれませんが、まずはこの内容で判断をお願いします。

  • if文で変数を指定する方法…

    素人なので、うまい方法が見つからず悩んでいます。 内容が変化する変数1があります。とりあえず、これを$hen1とします。これがある文字列だったら他の変数($hen2)を○○に変えるというのを実現したいのです。 で、 if($hen1 eq "1"){$hen2 = "文字列1"} else if($hen1 eq "2"){$hen2 = "文字列2"} ~~ という風にしたのですが、なぜかうまく動きません。 いったい何が間違っているのでしょう。もしくはif文で書くこと自体おかしいのでしょうか? 解決方法を教えてください。 お願いいたします。

    • ベストアンサー
    • CGI
  • 条件文if について

    仮定法ではなく条件文のIf節の場合、主節でwould を取ることはあるのでしょうか? たとえば、 If we don't know the solutions, we will fail in the exam. というのが条件文だと思いますが、もしこれが If we don't know the solutions, we would fail in the exam. とは使えますか? If節のとき、主節にwouldを持ってくる場合は、仮定法だと思いますが、would には現在の推量の意味もあると思います。ならば、wouldでも使えるかどうか教えてください。

  • perlのif文(条件の指定方法)につきまして

    おそらく単純な事だと思われますが、 不慣れなものでお付き合いいただけますとありがたいです。 if( $hoge == $testdata){ # 条件が一致した場合の処理 } $hoge には、2 が入っています。(文字列) $testdata には、2,6,10 が入っています。(文字列) 1対1であれば、上記の記述でいけるのですが、 カンマ区切りの復数の値と一致判定する方法がわかりません。 まず、配列にして my @testdata_hairetu = split(/,/, $testdata); などやってみましたが、 その後の条件文との絡みなどで詰まっています。 復数値がある場合に一つ一つ照合(判定)していく方法をご教授いただけないでしょうか。 foreachの内部でifとかかなと調べ中です。 perlは記述方法がいろいろあるようなのですが、できれば短さよりもわかり易い方が有難いです。 どうぞよろしくお願いします。

  • 条件が複数ある場合のif文の書き方

    条件が一つだけの時は上手く動いたのですが、条件を複数にした場合はどう書いたらいいのかわからず、質問させていただきました。 『おしえて!!ACTION SCRIPT』という本を見ながら、Flashを作っています。 その中ではif文の書き方は if(条件式が正しかったら){  実行するスクリプト; } となっていますが、変数が複数あって、そのすべてが合致しないと指定のフレームに飛べないようにするためにはどう書いたらいいでしょうか? if(a==1){ gotoAndPlay(2); } if(b==1){ gotoAndPlay(2); } if(c==1){ gotoAndPlay(2); } と、続けて書くとa=1の時点でフレーム2に進んでしまうことになりますよね? そうでなく、a.b.c全ての変数が1の場合に、フレーム2に飛ぶようにしたいのです。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • 条件分岐が多いIF分の書き方について。

    テキスト入出力でのIF分についてご質問がございます。 例えば条件が多いときに、結果が得られない時があるのですが 書き方で何か問題があるのならご指摘ください。 下記のコードでご説明します。 //コード1の文字列が04でコード2の文字列が01の場合00001を表示 if (コード1.compareTo ("04") == 0 && コード2 .compareTo ("01") == 0 ) { out.print ("00001"); //コード1の文字列が04でコード3の文字列が2の場合00005を表示 } else if (コード1.compareTo ("04") == 0 && コード3 .compareTo ("02") == 0 ) { out.print ("00005"); //コード1の文字列が08でコード3の文字列が07の場合10000を表示 } else if (コード1.compareTo ("08") == 0 && コード3 .compareTo ("07") == 0 ) { out.print ("10000"); //コード1の文字列が10でコード5の文字列が07の場合30000を表示 } else if (コード1.compareTo ("10") == 0 && コード5 .compareTo ("07") == 0 ) { out.print ("30000"); //それ以外エラー } else { out.print("エラー");} } 値がIF分の条件とマッチしていても if (コード1.compareTo ("04") == 0 && コード2 .compareTo ("01") == 0 ) { out.print ("00001"); //コード1の文字列が04でコード3の文字列が2の場合00005を表示 } else if (コード1.compareTo ("04") == 0 && コード3 .compareTo ("02") == 0 ) { out.print ("00005"); //コード1の文字列が08でコード3の文字列が07の場合10000を表示 } else if (コード1.compareTo ("08") == 0 && コード3 .compareTo ("07") == 0 ) { out.print ("10000"); このコードまでに当てはまらない条件はすべて ("10000"); の結果になり つまりそれ以降のelse if の条件に 当てはまらなくなります。 else if をいくらでも増やして条件分岐出来ると学習して 検証しているのですが・・・ 最終的にがIF~else if ~elseで 30パターンぐらい条件分岐したいと思ってます。 初歩的なご質問で恐縮ですが アドバイス よろしくお願いします。

    • ベストアンサー
    • Java
  • PerlのIF文について

    PerlのIF文の判断式につきまして、式全体を変数にしたいのですが、うまくできません。 初歩的な質問で大変恐縮ですが、他の言語を使っている人に聞いてもできるということなので、Perlでもできるような気がするのですが、うまく動かないので教えていただけませんでしょうか。 $ifbun="index(文字列, 検索したい単語) >=0"; if($ifbun){  処理 } とっても簡単な式なのですが、このままですと条件式を加味しない処理結果になっています。 $ifbunの中身をそのままIFの条件式に入れると問題なく条件式どおりの結果が得られるので、プログラムは間違っていないと思うのですが、変数に入れると、条件を加味していない結果が出てきます。 どなたかお分かりの方がいらっしゃいましたら教えてください。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • Perl

専門家に質問してみよう