提问人:TurboTobias 提问时间:4/26/2020 更新时间:4/26/2020 访问量:381
PHP if-statement 总是返回 false
PHP if-statement always returns false
问:
我正在使用带有简单 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' );
答:
假设 should 是一个整数,您可以使用以下命令$full_tegnet
if(intval($full_tegnet) === 100){
return '<h2>Something</h2>';
}
根据文档,ACF 范围字段是一个数值。正如 @Daisen Sekai 所说,您可以在您的条件下使用并使用严格的相等性进行比较。
$full_tegnet
intval()
<?php $full_tegnet = intval($full_tegnet); if ($full_tegnet === 100) { // your logic }
但是 PHP 确实类型杂耍,如果 ,您的语句应该返回 true。您可以在脚本中测试这段代码并查看结果:
$full_tegnet = 100
if ( $full_tegnet == '100' )
<?php $full_tegnet = 100; if ( $full_tegnet == '100' ) { echo '<h2>Something</h2>'; } else { echo '<h2>Something else</h2>'; }
您的代码中可能存在其他问题,更有可能是导致此问题的值。正如 @MC Emperor 所评论的那样,执行 a 以获取
$full_tegnet
var_dump($full_tegnet)
$full_tegnet
使用内置的 ACF 简码查看返回的内容
[acf field="{$tegnede_andele_}"]
下一个:PHP Double 比较
评论
var_dump($full_tegnet)
strlen($full_tegnet)
get_field()
<?php $full_tegnet = get_field('tegnede_andele_', get_the_ID(), false);