Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php json对象到未引用值的数组_Php_Arrays - Fatal编程技术网

Php json对象到未引用值的数组

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 )

我在做一件蠢事,却想不出来

我将设置细节作为json对象存储在mysql数据库中,然后将它们转换为数组

$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
)