PHP向JSON文件添加新元素时覆盖原有内容的问题
问题解决:向users.json追加用户而非替换原有数据
问题根源:当users.json已有数据时,json_decode()默认返回对象类型,直接使用$users[]尝试追加元素会静默失败,最终导致新用户数据覆盖原有内容。
修复方案:
- 强制
json_decode()返回关联数组,确保可以正常追加元素 - 处理文件为空的边界情况,避免
null引发的异常
修复后的代码:
$user = new User($_POST['login'], $_POST['password'], $_POST['mail'], $_POST['name']); // 读取文件内容,空文件时初始化为空数组 $usersContent = file_get_contents('users.json'); $users = $usersContent ? json_decode($usersContent, true) : []; // 追加新用户数据 $users[] = $user->toArray(); // 写入文件 file_put_contents('users.json', json_encode($users));
关键修改说明:
json_decode($usersContent, true):第二个参数设为true,将JSON结构转为PHP关联数组,支持[]追加操作- 三元表达式
$usersContent ? ... : []:处理文件为空的场景,保证$users始终是数组类型,避免后续操作报错
内容的提问来源于stack exchange,提问作者kirvel
相关产品推荐
相关产品推荐

