我遇到了get_option
和update_option
的奇怪问题。我需要在wp_options
表中添加一个选项,所以我使用了这个
update_option('_option_key_index', false)
,但这从未在数据库中添加记录。但如果我通过update_option('_option_key_index', 0)
,记录就会被添加。
进一步检查核心功能update_action
会发现一些奇怪的事情。值false
实际上被视为空字符串,而true
则不是!因此,当我向false
传递一个我知道尚不存在的密钥时,get_option
会返回一个空字符串($old_value = get_option( $option );
),在以下代码段中进行比较:
if ( $value === $old_value )
return false;
始终返回false
,因此没有记录添加到数据库中!
问题是为什么WordPress将布尔值false
视为空字符串,而值true
不相同?
下面是我尝试过的值列表以及我得到的结果:
true: works. Value added is 1
1: works. Value added is 1
false: does not work - No record added
0: works - Value added is 0
'true': works. Value added is true (passed as string)
'false': works. Value added is false (passed as string)
答案 0 :(得分:2)
当PHP将布尔值转换为字符串时,false
变为”(空字符串),而true
变为“ 1”(字符串)。
由于WordPress基于PHP,因此您可能需要坚持使用1/0或true
/ false
(作为字符串)来区分“布尔值”。