Php json对象到未引用值的数组
我在做一件蠢事,却想不出来 我将设置细节作为json对象存储在mysql数据库中,然后将它们转换为数组Php json对象到未引用值的数组,php,arrays,Php,Arrays,我在做一件蠢事,却想不出来 我将设置细节作为json对象存储在mysql数据库中,然后将它们转换为数组 $settings=(数组)json_解码($user['settings') 我可以将此打印到以下位置: Array ( [2] => 1 [1] => 1 ) 到目前为止还不错 如果我尝试更新其中一个设置,例如将1更改为等于0,我会得到以下结果: Array ( [2] => 1 [1] => 1 [1] => 0 )
$settings=(数组)json_解码($user['settings')代码>
我可以将此打印到以下位置:
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
)
您好,您可以将secent param true添加到函数json_decode中,如下所示:
$settings = json_decode($user['settings'], true);
我认为这是一个修复问题。首先,我在代码中看到一个语法错误。这是一个输入错误还是您实际运行的代码的一部分?此行需要取消设置->
unset($settings[1];)
语句终止“;”应在外部,如下所示
unset($settings[1]);
这是我试过的。
假设$user['settings']是这样形成的
$user['settings'] = array('2' => 1, '1' => 1);
并以这种方式转换为json对象
json_encode($user['settings']);
那么下面的代码应该可以工作了
$settings = (array)json_decode($user['settings']);
print_r($settings);
if(... true)
{
$settings[1] = 1;
}
else
{
$settings[1] = 0;
unset($settings[1]);
}
print_r($settings);
应该输出
Array
(
[2] => 1
[1] => 0
)
及
谢谢你指出错误;我打字太快了,已经修改了。是的。使用用户3146300的答案-这是需要设置的选项,以强制它转换为json_decode
ok good中的关联数组。我测试了转换和将第二个参数设置为true,这两个参数对我的代码都很好。不管怎样,如果你有答案就好了。
Array
(
[2] => 1
)