2012-09-06 41 views
1

所以我们可以说我有一个选项页面,将设置$threshold'1''2''3''4',或'5'变量if()语句来自一个设置?

我有一个提交表单/重定向不同基于该阈值(现在的门槛设置为three而已,不能改变,所以onetwo,并且threePAGE ONE功能的一个,而fourfive第二页,做FUNCTION TWO

我希望人们能够设置自己的门槛。

目前我有:

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') 

如果($ foo的== '五'){ //做所有这个疯狂的东西 }其他{ //做所有这些其他东西 } }

等3,2和1。

有没有简单的方法来做到这一点?就像我应该设置if /或语句作为变量?像:

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 
} 

我不太清楚“最好的办法”,以这样的:/

+0

“做所有这些疯狂的东西”和“做所有这些其他的东西”阻止相同的每个阈值? –

+0

对不起,但我并不真正明白你想要什么,也不知道你的问题是什么...... – Erik

+1

很难理解你正在尝试做什么......但也许答案涉及使用'in_array()',因此执行'$ foo ==''''|| $ foo =='four'|| $ foo =='three''您可以'in_array($ foo,$ acepted_values)'其中'$ acepted_values'是您设置中的阵列 – pleasedontbelong

回答

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 
    } 
} 
+0

真棒!经过一些修改,完美的作品:) – Xhynk

0

如果你必须做出复杂的决策,基于多个增值经销商,良好的strategie是建立一个映射。

映射是一个多维数组,具有函数名称或闭包作为值。你所做的是根据数组的键查找要调用的函数。