在$ value参数

时间:2017-03-02 14:47:04

标签: wordpress

我遇到了get_optionupdate_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)

1 个答案:

答案 0 :(得分:2)

当PHP将布尔值转换为字符串时,false变为”(空字符串),而true变为“ 1”(字符串)。

由于WordPress基于PHP,因此您可能需要坚持使用1/0或true / false(作为字符串)来区分“布尔值”。