If/Elseif的问题.代码仅执行第一个语句


Problems with If/Elseif. Code only executes first 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');
  }
}

为变量赋值而不是比较它。这将始终导致陈述是正确的。

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

应该是

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

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

你的问题是:你不是在比较两件事,而是在使变量设置等于"Handlee"。此操作将始终返回 true,因此仅执行第一个 if。

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

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

带有双"="。

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

int a = 0; 
if 0 == a 

您可以将其用于其他语言。这是好理由,如果你尝试做

If 0 = a

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