If / Elseif的问题。代码只执行第一个语句

时间:2013-02-01 18:11:43

标签: php if-statement

我的代码只执行if语句,但不会继续执行else部分。我已经单独尝试了每个声明,它们工作正常。但是,当我把它们放在一起时,只执行第一个语句。我做错了什么?

我试过这个:

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

2 个答案:

答案 0 :(得分:4)

您为变量赋值而不是比较它。这将始终导致陈述成立。

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

应该是

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

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

答案 1 :(得分:0)

我认为你的问题是:你没有比较两件事,你正在使变量设置等于“Handlee”。 此操作将始终返回true,因此只会执行第一个if。

要解决此问题,请使用正确的句子:

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

加倍“=”。

@Jessica,一个非常好的编程实践,为了避免这个简单的错误,总是把你的变量放在比较的右边。像这样:

int a = 0; 
if 0 == a 

您可以将它用于其他语言。如果您尝试

,这是很好的理由
If 0 = a

在调试模式下很容易找到问题。