创建新用户时,我会将用户名和密码(无哈希(保存在json文件和数据库中,因此每次我将新用户附加到json文件时:
{
"user3": "demo"
} {
"user4": "demo"
} {
"user4": "demo"
} {
"user5": "demo"
}
代码:
$data = array($request->input('username') => $request->input('password'));
$datos = json_encode($data);
File::append(storage_path('archivos/datos.json'), $data);
当然,上面的格式不是有效的json,我怎么能得到这个
[{
"user3": "demo"
}, {
"user4": "demo"
}, {
"user4": "demo"
}, {
"user5": "demo"
}, {
"user5": "demo"
}, {
"user5": "demo"
}, {
"user7": "demo"
}, {
"user8": "demo"
}]
并使用foreach读取,如下所示:
$result = File::get(storage_path('archivos/datos.json'));
$result = json_decode($result);
foreach($result as $key=>$item){
echo $key .''. $item;
}
首先从文件中获取字符串,然后您可以用"} , {"
对所有"} {"
执行str_replace操作。json在开始时也有[
,在结束时有]
,所以我们也添加了它们:
$json = "[".str_replace('} {', '},{', $fileContent)."]";
这里我们在$json变量中有一个json字符串,所以我们可以通过以下方式将其转换为数组:
$users = json_decode($json);
最快的方法是附加一些数据:
fopen('myfile.json', 'a');
但是你想存储一个数组,所以你必须读取文件的内容,更新并保存它
$users = json_decode(file_get_content(storage_path('archivos/datos.json')));
$users[] = $newUser;
file_put_contents(storage_path('archivos/datos.json'), json_encode($users, JSON_PRETTY_PRINT);
你也可以做一行(丑陋,但有效(:
file_put_contents(storage_path('archivos/datos.json'), json_encode(json_decode(file_get_content(storage_path('archivos/datos.json')))[] = $newUser, JSON_PRETTY_PRINT);