プロが教えるわが家の防犯対策術!

$keyという変数には、aiueo、kakikukeko、sasisuseso、tatitutetoなどの文字列が入ると仮定して、if文でaiueo、sasisusesoの文字列の時のみ、実行させないようにしたい場合、通常は

if ($key != "aiueo" && $key != "sasisuseso") {
  処理
}

としなければなりません。しかし、これだともっと条件が多くなった場合、非常に見づらくなってしまいます。

「$keyと言う変数が、○○、××、■■、・・・以外の値の時」という条件を各場合、もっと簡潔にまとめて書く方法って無いでしょうか? 例えば、if ($key != ("aiueo" && "sasisuseso"))みたいな感じで。
(switchを使う手もありますが、これは他の変数($a == 0など)に関する条件を組み合わせたい場合、面倒になるので)

もし、方法などありましたら、教えていただければと思います。

A 回答 (3件)

$cond=array("aiueo" => 1,"kakikukeko" => 1);



if(empty($cond[$key])) {
処理
}

というのは、どうでしょう?
emptyの所はそのまま !$cond[$key] とも書けますが、こっちの方が意味が分かりやすいかも。

もし、このifがループの中で実行されるのでしたら、ループの外側で条件判定の配列を作った方がいいでしょう。また排除が必要な文字列が多くなった時、連想配列ですとあるかどうかの判定が一定時間でできます。整数キー配列ですと、ないことの判定は配列の要素全てを見に行く必要があります。

また、この方法ですと除外する文字列を外部ファイルから読むなどの処理もできます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/11/15 15:01

switch文では、こんな書き方もできます。



switch (true) {
  case $key != 'aioeo':
  case $key != 'sasisuseso':
    処理
    break;
  case $key == 'aiueo':
    処理
    break;
  default:
    break;
}

参考までに。
    • good
    • 0
この回答へのお礼

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

ありがとうございました。

お礼日時:2008/11/15 15:02

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

    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2008/11/15 15:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!