如果字段匹配,如何覆盖Json-PHP

如果字段匹配,如何覆盖Json-PHP,php,json,Php,Json,在网站上工作,需要为每个用户存储数据。当前正在使用json文件及其设置方式,每次都会覆盖数据 第一个问题,使用一个json文件是保存这些数据的最佳方式,还是应该为每个用户设置一个目录 第二个问题,如果一个文件是最好的方式,我如何附加“唯一”数据?我在“如果字段与PHP匹配,则覆盖JSON”的帖子中找到了一些示例代码,但它对我不起作用。它现在根本没有写入文件 原始代码: $posts[] = array('vhclID'=> $vhclID, 'statVal1'=> $engStat

在网站上工作,需要为每个用户存储数据。当前正在使用json文件及其设置方式,每次都会覆盖数据

第一个问题,使用一个json文件是保存这些数据的最佳方式,还是应该为每个用户设置一个目录

第二个问题,如果一个文件是最好的方式,我如何附加“唯一”数据?我在“如果字段与PHP匹配,则覆盖JSON”的帖子中找到了一些示例代码,但它对我不起作用。它现在根本没有写入文件

原始代码:

$posts[] = array('vhclID'=> $vhclID, 'statVal1'=> $engStat, 'statVal2'=> $brakeStat);

$response['posts'] = $posts;

$fp = fopen('results.json', 'w');
fwrite($fp, json_encode($response));
fclose($fp);
修改代码,以便能够附加新数据并消除冗余(不起作用):

谢谢你的帮助

$fp = fopen('results.json', 'r');
$postjson = json_decode(fread($fp, 1024*1024), true);
fclose($fp);

$posts = ($posts==array()) array('vhclID'=> $vhclID, 'statVal1'=> $engStat, 'statVal2'=> $brakeStat) : $postjson['posts'];

$response['posts'] = $posts;

$fp = fopen('results.json', 'w');
fwrite($fp, json_encode($response));
fclose($fp);
你应该做你想做的。
修改
$posts

如果存储典型用户数据,则应使用数据库;显然,您不希望仅为了观察者或为一个用户修改一个字段而加载兆字节的用户数据

如果您有一些发布的数据,并且我正确理解了您的问题,您可以这样做(但要增加安全性):


然后将数据保存到JSON文件中。

我经常处理PHP和JSON数据

我注意到的一件事是,默认情况下,
json\u decode
将创建一个PHP
对象(stdClass)

示例

$file = file_get_contents("results.json");

$json = json_decode($file, TRUE); // Added TRUE as second parameter

var_dump($json); // Outputs: array(1) { ["example"]=> string(4) "test" }
results.json的内容
>>
{“示例”:“test”}

如果将
true
添加为
json\u decode
的第二个参数,则会得到一个数组

示例

$file = file_get_contents("results.json");

$json = json_decode($file, TRUE); // Added TRUE as second parameter

var_dump($json); // Outputs: array(1) { ["example"]=> string(4) "test" }
获得适当的数据后,您可以根据需要修改和更改
$json
,然后将其重新写入
.json
文件

因此,对于问题1:为每个用户提供一个单独的json文件(例如:
userID-001.json
userID-002.json
)可能是更好的方法

对于问题2:您可以获取单个文件,获取内容并使用
json\u decode($data,TRUE)//将其存储在PHP数组中,如果需要数组,则使用TRUE作为第二个参数,然后修改数组并重新保存(使用
json\u encode


希望这有帮助~

你应该考虑使用一个数据库。使数据更容易处理。我有一个数据库。我没有使用json来存储长期数据…只是为了将数据发送到html以表单形式显示。不幸的是,我在这一行得到了一个括号错误(解析错误:语法错误,意外的“[”in…)-$posts[]=json_decode(fread($fp,1024*1024),true)[posts];您能提供建议吗?谢谢
$file = file_get_contents("results.json");

$json = json_decode($file);

var_dump($json); // Outputs: object(stdClass)#14 (1) { ["example"]=> string(4) "test" }
$file = file_get_contents("results.json");

$json = json_decode($file, TRUE); // Added TRUE as second parameter

var_dump($json); // Outputs: array(1) { ["example"]=> string(4) "test" }