2013-01-22 14 views
0

所以我使用WordPress的這個項目,我不太清楚如何去這個整潔乾淨&PHP「如果‘任何’這些選項的設置,顯示它

我已經得到8個選擇總計。如果其中的任何設置,我需要東西發生。我還需要執行它爲每一個組。

讓我們使用兩個,現在

if((genesis_get_option('setting_one', 'settings') || genesis_get_option('setting_two', 'settings')) !== '') 
    { // print() each one that is set } 

你可以看到如何這樣做的8個選項會很快變得非常難看。我所有的設置都具有相同的前綴:(setting_asetting_bsetting_onesetting_two

$settings = array_fill(1, 8, 'setting_'); 
$labels = array(1 => 'a', 'b', 'c', 'd', 'one', 'two', 'three', 'four'); 

....但我不知道在哪裏從那裏出發。

有GOT是一種乾淨的方式來做到這一點?

+1

你可以顯示'genesis_get_option'的代碼嗎?也許你可以使用返回值來獲得它的優勢,也許可以通過'switch-case'來運行。 –

+0

你可以遍歷'$ labels'來測試每一個。我懷疑你會變得更清潔。 –

回答

2

一個稍微更合適的方法是:

$settings = array("setting_one","setting_two","setting_a"); 
$has_setting = false; 
foreach($settings as $setting){ 
    if(genesis_get_option($setting, 'settings') !== ''){ 
     $has_setting = true; 
     break; 
    } 
} 
if($has_setting){ 
    //Do stuff 
} 

更妙的是把支票存入一個方法來保持代碼整潔。

編輯:剛纔意識到你需要每個設置的動作。在這種情況下,你可以在循環中完成它。

+0

這正是我正在尋找的東西,比我通過循環運行時還要乾淨些,謝謝!我會在5秒內接受它,讓我:) – Xhynk

+0

@Shortbus沒問題,很高興我可以幫助:) – Jim

0
if(false !== array_search(true, 
    array_map(
    'genesis_get_option', 
    array('setting_one', 'setting_to' /* ... */), 
    array('value_one', 'value_two' /* ... */) 
) 
)) { /* ... */ } 
相關問題