PHP if-statement 总是返回 false

PHP if-statement always returns false

提问人:TurboTobias 提问时间:4/26/2020 更新时间:4/26/2020 访问量:381

问:

我正在使用带有简单 if else 语句的 PHP 函数。如果变量 = 100,则执行某些操作,否则执行其他操作。

数据来自 ACF 范围字段。出于某种原因,即使 ACF 字段 = 100,该函数也始终返回 else-statement。我认为问题出在我尝试使用的 if 语句上:=、==、!==、=== 或 >=。如果我将其更改为 single =,那么无论我在 ACF Range 字段中输入什么值,它总是返回 h2 Something,但其余的都返回 h2 Something。

function hovsa_shortcode() {
    $full_tegnet = get_field("tegnede_andele_");
    if ( $full_tegnet == '100' ) {

        return '<h2>Something</h2>';

    } else {

        return '<h2>Something else</h2>';

    }
}

add_shortcode( 'hovsa', 'hovsa_shortcode' );
php wordpress if-statement advanced-custom-fields 相等

评论

0赞 MC Emperor 4/26/2020
如果你这样做会怎样?返回什么?var_dump($full_tegnet)strlen($full_tegnet)
0赞 chriss 4/26/2020
简单的等号是一个赋值。这仅在 IF 中的特殊情况下出现,并且会使代码难以辨认。双等号是比较运算符,应该匹配。正如@MC皇帝所说,var_dump打印什么?
0赞 TurboTobias 4/26/2020
嗯。。出于某种原因,var_dump返回 null。我以前使用过get_field,并取得了巨大的成功。像这样的东西: $tegnet = get_field(“tegnede_andele_”);- $maxvalue = ($tegnet == 100) ?0 : 10000;
0赞 aliirfaan 4/26/2020
ACF get_field尝试使用帖子 ID 并禁用任何格式逻辑:如果仍然为 null,则您的字段实际上是 null!get_field()<?php $full_tegnet = get_field('tegnede_andele_', get_the_ID(), false);
0赞 TurboTobias 4/26/2020
它仍然返回 null...但是,我发现问题在于我试图在循环之外获取数据。如果我回显这样的东西,那么它会回显 100:全局 $wp_query;$postid = $wp_query->post->ID;echo get_post_meta($postid, 'tegnede_andele_', true);wp_reset_query();

答:

1赞 Daisen Sekai 4/26/2020 #1

假设 should 是一个整数,您可以使用以下命令$full_tegnet

if(intval($full_tegnet) === 100){
     return '<h2>Something</h2>';
}
0赞 aliirfaan 4/26/2020 #2
  1. 根据文档,ACF 范围字段是一个数值。正如 @Daisen Sekai 所说,您可以在您的条件下使用并使用严格的相等性进行比较。$full_tegnetintval()

    <?php $full_tegnet = intval($full_tegnet); if ($full_tegnet === 100) { // your logic }

  2. 但是 PHP 确实类型杂耍,如果 ,您的语句应该返回 true。您可以在脚本中测试这段代码并查看结果:$full_tegnet = 100if ( $full_tegnet == '100' )

    <?php $full_tegnet = 100; if ( $full_tegnet == '100' ) { echo '<h2>Something</h2>'; } else { echo '<h2>Something else</h2>'; }

  3. 您的代码中可能存在其他问题,更有可能是导致此问题的值。正如 @MC Emperor 所评论的那样,执行 a 以获取$full_tegnetvar_dump($full_tegnet)$full_tegnet

  4. 使用内置的 ACF 简码查看返回的内容

    [acf field="{$tegnede_andele_}"]