编辑:我相信我的困惑可能是由我在测试选项值的页面顶部的代码创建的......这创建了一个快捷方法来引用该选项而不使用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?
尝试
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