在檔案中儲存PHP的數組哪種方法更好?

來源:互聯網
上載者:User
對php來說將一些配置資訊數組儲存到檔案中是司空見慣的情況,就我目前所知,有以下幾種儲存方法

  1. 直接用var_export寫成return array(...);的php代碼,然後讀取的時候用require解析即可。
  2. 使用serialize函數序列化一個數組,然後讀取的時候用unserialize還原序列化
  3. 使用json_encode序列化一個數組,然後讀取的時候用json_decode還原序列化
  4. 使用其它的檔案格式,比如yaml或者ini

有人比較過這幾種方法的優劣嗎?哪種方法更好,或者說它們適用的情境有和不同?

回複內容:

對php來說將一些配置資訊數組儲存到檔案中是司空見慣的情況,就我目前所知,有以下幾種儲存方法

  1. 直接用var_export寫成return array(...);的php代碼,然後讀取的時候用require解析即可。
  2. 使用serialize函數序列化一個數組,然後讀取的時候用unserialize還原序列化
  3. 使用json_encode序列化一個數組,然後讀取的時候用json_decode還原序列化
  4. 使用其它的檔案格式,比如yaml或者ini

有人比較過這幾種方法的優劣嗎?哪種方法更好,或者說它們適用的情境有和不同?

如果你的數組是只是給php項目用,使用第一種方法是最好的最方便的,我一直用它

如果你的資料可能不僅僅被php所用,那最好使用通用性更高的json格式了,當然yaml,xml也行,但總歸不如json_encode方便

serialize我還真的很少在儲存數組的時候用到

PS:不好意思剛才沒看到你是說在設定檔的使用。如果是設定檔的話,一定要注意你的php代碼會不會有可能被加密,如果有這種可能性最好是使用json或者yml或者ini等其他格式方便設定檔的修改

我覺得第一種方式不是很好,這樣可能會造成執行任意PHP代碼的漏洞。

推薦用JSON,可讀性好(和序列化相比);可讀可寫(php沒有內建函數來寫ini);通用性好,其他語言也可以比較輕鬆地訪問。

一般來說,用 ini 是最好不過的了(人工可配),其次是serialize(系統自動產生)

我一般都是用JSON,跨平台,而且易閱讀。

如果需要較大壓縮,可選用蘋果的binary plist格式,缺點是肉眼不可讀,需要引入CFPropertyList。

一般需求用json或xml就可以了。CFPropertyList也可以用來寫入或解析xml

如果僅供PHP使用,我還是比較喜歡直接用PHP數組。

serialize

必須是這個方式,因為很簡單,只需要序列化就可以了。相對於josn會更方便(如果你是在PHP項目中用的話,而無需其他非PHP項目下使用)推薦serialize。

還是用json吧。可讀性強。體積小。解析速度快。跨語言。

XML雖然也擁有強大的可讀性。但是比起JSON來說,太過龐大,解析速度也是問題。
YAML可讀性一般,較複雜的內容肉眼看起來那就是一堆天書了。但毋庸置疑檔案體積將是最小的。

除var_export外。你需要考慮檔案直接被瀏覽器開啟的問題。

最終還是力薦JSON,json_encode($content,15) 。推薦使用第二個參數。json_decode($data,true)可輕易的將object轉換為array類型。方便操作。

看需求.

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.