2012-09-06 69 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是建立一個映射。

映射是一個多維數組,具有函數名稱或閉包作爲值。你所做的是根據數組的鍵查找要調用的函數。