2013-02-01 82 views
1

我的代碼只執行if語句,但不會繼續執行else部分。我已經單獨嘗試了每項聲明並且他們工作得很好。但是,當我將它們放在一起時,只會執行第一條語句。我究竟做錯了什麼?If/Elseif的問題。代碼只執行第一條語句

我已經試過這樣:

function body_google_webfonts() { 
    if($settings['font_type_body'] = "Handlee") : 
     wp_register_style('body-google-webfonts', 'http://fonts.googleapis.com/css?family=Handlee'); 
     wp_enqueue_style('body-google-webfonts'); 
    elseif ($settings['font_type_body'] = "Kreon") : 
     wp_register_style('body-google-webfonts', 'http://fonts.googleapis.com/css?family=Kreon'); 
     wp_enqueue_style('body-google-webfonts'); 
    endif; 
} 

這:

function body_google_webfonts() { 
    if($settings['font_type_body'] = "Handlee") : 
     wp_register_style('body-google-webfonts', 'http://fonts.googleapis.com/css?family=Handlee'); 
     wp_enqueue_style('body-google-webfonts'); 
    endif; 
    if ($settings['font_type_body'] = "Kreon") : 
     wp_register_style('body-google-webfonts', 'http://fonts.googleapis.com/css?family=Kreon'); 
     wp_enqueue_style('body-google-webfonts'); 
    endif; 
} 

這:

function body_google_webfonts() { 
    if($settings['font_type_body'] = "Handlee") { 
     wp_register_style('body-google-webfonts', 'http://fonts.googleapis.com/css?family=Handlee'); 
     wp_enqueue_style('body-google-webfonts'); 
    } 
    if ($settings['font_type_body'] = "Kreon") { 
     wp_register_style('body-google-webfonts', 'http://fonts.googleapis.com/css?family=Kreon'); 
     wp_enqueue_style('body-google-webfonts'); 
    } 
} 

,我已經試過這樣:

function body_google_webfonts() { 
    if($settings['font_type_body'] = "Handlee") { 
     wp_register_style('body-google-webfonts', 'http://fonts.googleapis.com/css?family=Handlee'); 
     wp_enqueue_style('body-google-webfonts'); 
    } else if ($settings['font_type_body'] = "Kreon") { 
     wp_register_style('body-google-webfonts', 'http://fonts.googleapis.com/css?family=Kreon'); 
     wp_enqueue_style('body-google-webfonts'); 
    } 
} 
+1

wow use double == note one = – 2013-02-01 18:12:41

+2

我發誓,這裏有上百萬個這樣的問題! ** == **和** = **。 –

+0

當你每天12小時編碼時,很容易錯過最小的事情。我的大腦需要一個假期:P謝謝你們。 – Jessica

回答

0

我覺得你的問題是:你是不是比較兩件事情,你可以將這個變量設置爲等於 「Handlee」。 此操作將始終返回true,所以只需執行第一個if。

爲了解決這個問題,使用正確的一句:

$settings['font_type_body'] == "Handlee" 

雙 「=」。

@Jessica,一個非常好的編程實踐,爲了避免這個簡單的錯誤,總是把你的變量放在比較的右側。類似這樣的:

int a = 0; 
if 0 == a 

您可以將其用於其他語言。這是很好的原因,如果你試圖做

If 0 = a 

很容易找到你的問題在調試模式。

4

您將值賦給變量而不是比較變量。這將始終導致聲明是真實的。

if($settings['font_type_body'] = "Handlee") : 

應該

if($settings['font_type_body'] == "Handlee") : 

if($settings['font_type_body'] === "Handlee") : 
+0

約翰我覺得一個評論就夠了! – 2013-02-01 18:14:37

+0

我的天啊。謝謝!我覺得自己沒有抓住那個白癡。太糟糕了,調試模式並沒有捕捉到這樣的事情,哈! – Jessica

相關問題