我正在做一些愚蠢的事情,无法弄清楚。json对象数组没有引用值
我把存储在mysql数据库中的设置细节作为json对象,然后将它们转换为数组。
$settings = (array)json_decode($user['settings']);
我可以print_r()
此为以下内容:
Array
(
[2] => 1
[1] => 1
)
好为止。
如果我尝试更新的设置之一,因此,例如改变1等于0,我得到这个:
Array
(
[2] => 1
[1] => 1
[1] => 0
)
我这样做只是这一点:
$settings[1] = 0;
最终我试图取消设置值,如果它是0,然后更新数据库。它不是更新值,而是创建一个新条目,并且使用unset
不会执行任何操作。
我在做什么错?参考
完整的代码片段:
$settings = (array)json_decode($user['settings']);
print_r($settings);
if(isset($form['usr'][$user['id_user']])){
$settings[1] = 1;
}else{
$settings[1] = 0;
unset($settings[1]);
}
print_r($settings);
回报:
Array
(
[2] => 1
[1] => 1
)
Array
(
[2] => 1
[1] => 1
[1] => 0
)
感谢您指出错字;我输入得太快并修改。 – TH1981
你现在有这个工作吗? – geoffreybans
是的。使用user3146300的答案 - 这是需要设置为强制它转换为json_decode' – TH1981