Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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 在Laravel中创建有效的json数据_Php_Json_Laravel - Fatal编程技术网

Php 在Laravel中创建有效的json数据

Php 在Laravel中创建有效的json数据,php,json,laravel,Php,Json,Laravel,创建新用户时,我将用户名和密码(无哈希)保存在json文件和数据库中,因此每次我将新用户添加到json文件时: { "user3": "demo" } { "user4": "demo" } { "user4": "demo" } { "user5": "demo" } 守则: $data = array($request->input('username') => $request->input('password')); $dato

创建新用户时,我将用户名和密码(无哈希)保存在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_替换所有的
“}{{{{code>为
“},{
一个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);
您还可以制作一个衬里(丑陋,但有效):


如果你想在一个文件中附加一个JSON数组,你每次都需要对它进行解码和重新编码。那么我应该使用array_push吗?另外,我可以强烈建议不要存储纯文本密码吗?我不认为这是他需要解决的问题。OP的第一个代码片段,你在这里提到的,只是他当前结果的一个例子nt尝试。我认为他想要的是从文件中不获取json字符串,因为json是不可能的,而且每次读取文件解码并将新用户添加到数组中,然后将其写入文件,这不是一个好主意,因为对于每个用户,我们必须这样做,这对性能没有好处
file_put_contents(storage_path('archivos/datos.json'), json_encode(json_decode(file_get_content(storage_path('archivos/datos.json')))[] = $newUser, JSON_PRETTY_PRINT);