在文件中保存PHP的数组哪种方法更好?
黄舟
黄舟 2017-04-10 13:12:41
0
9
702

对php来说将一些配置信息数组保存到文件中是司空见惯的情况,就我目前所知,有以下几种保存方法

  1. 直接用var_export写成return array(...);的php代码,然后读取的时候用require解析即可。
  2. 使用serialize函数序列化一个数组,然后读取的时候用unserialize反序列化
  3. 使用json_encode序列化一个数组,然后读取的时候用json_decode反序列化
  4. 使用其它的文件格式,比如yaml或者ini

有人比较过这几种方法的优劣吗?哪种方法更好,或者说它们适用的场景有和不同?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全員に返信(9)
洪涛

如果你的数组是只是给php项目用,使用第一种方法是最好的最方便的,我一直用它

如果你的数据可能不仅仅被php所用,那最好使用通用性更高的json格式了,当然yaml,xml也行,但总归不如json_encode方便

serialize我还真的很少在保存数组的时候用到

PS:不好意思刚才没看到你是说在配置文件的使用。如果是配置文件的话,一定要注意你的php代码会不会有可能被加密,如果有这种可能性最好是使用json或者yml或者ini等其他格式方便配置文件的修改

いいねを押す +0
黄舟

我觉得第一种方式不是很好,这样可能会造成执行任意PHP代码的漏洞。

推荐用JSON,可读性好(和序列化相比);可读可写(php没有内置函数来写ini);通用性好,其他语言也可以比较轻松地访问。

いいねを押す +0
大家讲道理

一般来说,用 ini 是最好不过的了(人工可配),其次是serialize(系统自动生成)

いいねを押す +0
刘奇

我一般都是用JSON,跨平台,而且易阅读。

いいねを押す +0
黄舟

如果需要较大压缩,可选用苹果的binary plist格式,缺点是肉眼不可读,需要引入CFPropertyList。

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

いいねを押す +0
迷茫

如果仅供PHP使用,我还是比较喜欢直接用PHP数组。

いいねを押す +0
小葫芦

serialize

必须是这个方式,因为很简单,只需要序列化就可以了。相对于josn会更方便(如果你是在PHP项目中用的话,而无需其他非PHP项目下使用)推荐serialize。

いいねを押す +0
洪涛

还是用json吧。可读性强。体积小。解析速度快。跨语言。

XML虽然也拥有强大的可读性。但是比起JSON来说,太过庞大,解析速度也是问题。
YAML可读性一般,较复杂的内容肉眼看起来那就是一堆天书了。但毋庸置疑文件体积将是最小的。

除var_export外。你需要考虑文件直接被浏览器打开的问题。

最终还是力荐JSON,json_encode($content,15) 。推荐使用第二个参数。json_decode($data,true)可轻易的将object转换为array类型。方便操作。

いいねを押す +0
Peter_Zhu

看需求.

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!