1

$threshold、、、または_'1''2''3''4''5'

そのしきい値に基づいて異なる方法で送信/リダイレクトするフォームがあります (現在、し​​きい値はのみに設定されており、three変更できないためone、、、ページ 1に移動してFUNCTION ONEを実行し、ページ2に移動してFUNCTIONを実行しますtwothreefourfive

私は、人々が自分の閾値を設定できるようにしたいと考えています。

現在私は持っています:

if($foo == 'five' || $foo == 'four' || $foo == 'three'){
    //DO ALL THIS CRAZY STUFF
} else {
    //DO ALL THIS OTHER STUFF
}

私が欲しいのは、基本的にそれを包んだしきい値です:

if($threshold == '5'){
    if($foo == 'five'){
        //DO ALL THIS CRAZY STUFF
    } else {
        //DO ALL THIS OTHER STUFF
    }
} else if ($threshold =='4'){
    if($foo =='five' || $foo == 'four')

if($foo == 'five'){ //このクレイジーなことをすべて行う } else { //この他のすべてのことを行う } }

3、2、および 1 についても同様です。

それを行う簡単な方法はありますか?if/orステートメントを変数として設定する必要がありますか? お気に入り:

if($threshold == '5'){ $var = "$foo =='five'" }
else if($threshold == '4'){ $var = "$foo =='five' || $foo == 'four'" }

それからする

if($var){
    //DO ALL THIS CRAZY STUFF
} else {
    //DO ALL THIS OTHER STUFF
}

??

これに対する「最善のアプローチ」がよくわかりません:/

4

2 に答える 2

2

異なる$threshold数と$foo組み合わせに対して、それぞれに異なる機能があるのか​​ 、それとも$fooが指定され$thresholdた . 後者があなたの目標だと思います:

// the map
$thresholds = array(
 5 => array('five'),
 4 => array('five','four'),
 // etc
);

// dummy values
$threshold = 5;
$foo = "four";

// check values
if(array_key_exists($threshold,$thresholds)) {
  if(in_array($foo, $thresholds[$threshold]))  {
    //DO ALL THIS CRAZY STUFF
  }
  else {
    //DO ALL THIS OTHER STUFF
  }
}
于 2012-09-06T22:28:42.607 に答える
0

複数の変数に基づいて複雑な決定を行う必要がある場合は、マップを作成することをお勧めします。

マップは多次元配列であり、値として関数名またはクロージャがあります。配列のキーに基づいて、呼び出す関数を検索します。

于 2012-09-06T21:44:06.127 に答える