【发布时间】:2021-12-05 07:31:39
【问题描述】:
我将使用 JSON 文件来包含指向一些帖子的链接列表,并且可以随时更新它。但是,我对与 PHP 的 fopen() 函数一起使用的模式感到困惑。这将是一个平面文件数据库,主要是为了让我在进入适当的关系数据库之前学习使用文件、PHP 和 JSON(这不是我担心使用 SQL 或类似的东西还...)
我正在使用的过程是,一旦输入了博客文章,它将创建一个目录,将一个新的 index.php 文件保存到其中,其中包含让我查看页面的所有内容,然后,在哪里我目前卡住了,用标题、作者、日期和指向新创建页面的链接更新一个 JSON 文件。
基于PHP Manual,我可能想要使用三种模式。 r+、w+ 或 a+。
我希望使用的过程是获取 JSON 文件并将数据放入数组中。更新数组,然后将其保存回文件。
a+ 将指针放在文件末尾并且总是附加写入,所以我假设这是这种情况下最糟糕的选择,因为我不会在文件末尾添加新的 JSON 条目(我很想在 JSON 对象的开头而不是末尾插入任何新数据。
w+ 提到读写,但也截断文件 - 这是在将数据保存到文件时发生,还是在文件打开时发生?如果我在现有的 JSON 文件上使用此模式,那么我是否会在 之前读取一个空白文件,我什至可以修改数组并将其重新保存到对象中?
r+ 提到将指针放在文件的开头 - 保存数据会覆盖那里的内容还是会在现有内容之前插入数据?如果插入,如何手动清除文件,然后将新修改的数组保存到 JSON 对象中?
哪些模式最适合我想要做的事情?有没有更好的方法呢?
【问题讨论】:
-
我会使用
file_get_contents来读取文件并使用w+选项来保存它。 -
“最适合”取决于您想做什么。是手动修改 JSON 结构,还是使用
json_encode? -
@NicoHaase 如果手动,你的意思是我会通过记事本或 VS Code 之类的东西进入并手动添加条目,不,我可能会在代码中使用
json_encode进行操作跨度> -
如果您打算使用
json_encode执行此操作,您将如何仅修改该数组的部分内容? -
鉴于我目前发现的情况,似乎最可行的选择是读取 JSON 文件,将其复制到变量中,对其进行修改,然后将其重新写入文件。除非有更好的方法我不知道大声笑