我將使用一個 JSON 檔案來包含一些帖子的鏈接串列,它可以隨時更新。但是,我對與 PHPfopen()函式一起使用的模式感到困惑。這將是一個平面檔案資料庫,主要是讓我學習使用檔案、PHP 和 JSON,然后再使用適當的關系資料庫(這不是我擔心使用 SQL 或類似的東西還沒有...)
我正在使用的程序是,一旦輸入博客文章,它將創建一個目錄,將一個新的 index.php 檔案保存到其中,其中包含讓我查看頁面的所有內容,然后,我在哪里當前卡住,使用標題、作者、日期和指向新創建頁面的鏈接更新 JSON 檔案。
根據PHP Manual,我可能想要使用三種模式。 r 、w 、 或a 。
我希望使用的程序是獲取 JSON 檔案并將資料放入陣列中。更新陣列,然后將其保存回檔案。
a 將指標放在檔案末尾并始終附加寫入,所以我假設這是這種情況下最糟糕的選擇,因為我不會在檔案末尾添加新的 JSON 條目(我很想實際上在 JSON 物件的開頭而不是末尾插入任何新資料)。
w 提到讀取和寫入,但也會截斷檔案 - 這是在將資料保存到檔案時發生的,還是在打開檔案時發生的?如果我在現有的 JSON 檔案上使用這種模式,那么在我什至可以修改陣列并將其重新保存到物件之前,我是否會讀取一個空白檔案?
r 提到將指標放在檔案的開頭 - 保存資料會覆寫那里的內容還是會在現有內容之前插入資料?如果插入,我將如何手動清除檔案,然后將新修改的陣列保存到 JSON 物件?
哪些模式最適合我想要做的事情?無論如何,有沒有更好的方法來做到這一點?
uj5u.com熱心網友回復:
如果您總是讀取或寫入整個檔案,則根本不必使用檔案句柄 - PHP 提供了一對函式file_get_contents($file_name),file_put_contents($file_name, $content)并且使用起來要簡單得多。
當你正在使用的檔案句柄與他們的各種模式是最有用的部分檔案。例如,如果您使用 CSV,您可以一次讀取或寫入一行,而無需一次在記憶體中存盤完整的資料集。或者,對于二進制檔案格式,您可能知道要從中讀取的檔案的位置,并且可以“尋找”該位置的檔案句柄。
uj5u.com熱心網友回復:
您可能應該首先讀取整個檔案(例如,使用file_get_contents(),然后使用w 將其打開以寫入新資料。(編輯:或者更確切地說,正如另一個答案所指出的那樣,使用file_put_contents(),當您只進行一次寫入操作時,這總是更簡單) .)
r 將在您寫入檔案時覆寫盡可能多的檔案,但不會洗掉超出此范圍的檔案。如果您的資料大小總是增加,這應該與完全覆寫檔案相同,但即使現在是真的,這是一個假設,將來可能會弄亂您的資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/324345.html
