布尔值在PHP中变为数字

Sco*_*t B 1 php wordpress

编辑:我相信我的困惑可能是由我在测试选项值的页面顶部的代码创建的......这创建了一个快捷方法来引用该选项而不使用get_option('选项') 方法...

global $options;
foreach ($options as $value) {
if (get_settings( $value['id'] ) === FALSE) { 
        $$value['id'] = $value['std']; 
    } else { 
        $$value['id'] = get_settings( $value['id'] );
    }
}
Run Code Online (Sandbox Code Playgroud)

所以当我设置变量$ myvar的值时,通过我的主题选项面板中选中的复选框并单击save,然后在worpdress中查看我的options.php,变量的值是

true
Run Code Online (Sandbox Code Playgroud)

当我使用时查找此变量

if($myvar == "true")
Run Code Online (Sandbox Code Playgroud)

它过去了.

但是,当我通过update_options()方法直接设置值时,就像这样......

$mvar = true;
update_option('myvar', $myvar);
Run Code Online (Sandbox Code Playgroud)

值从true变为1

当我和以前做同样的比较时,如果($ myvar =="true"),它现在失败了.它不再是"真实的".

我错过了什么?(1)为什么是"true"和1,不评估相同和(2)update_option方法对myvar的值做什么来将值从true更改为1?

Tyl*_*ter 5

尝试

if($myvar == true)
Run Code Online (Sandbox Code Playgroud)

$myvar = true;
Run Code Online (Sandbox Code Playgroud)

TRUE并且FALSE是PHP内置的布尔变量,它比真正的字符串更通用.


关于update_option.它可能不是该选项将其更改为1.相反,它可能是,当它被插入到数据库中,它插入它作为字符串"true".然后,当它返回时,它被转换为布尔值true,打印时是1