首页 >社区问答列表 >在文件中保存PHP的数组哪种方法更好?

在文件中保存PHP的数组哪种方法更好?

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

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

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

  • 小皮
  • 小皮    2017-04-10 13:14:419楼

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

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

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

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

    +0添加回复

  • 回复
  • 黄舟
  • 黄舟    2017-04-10 13:14:418楼

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

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

    +0添加回复

  • 回复
  • 黄舟
  • 黄舟    2017-04-10 13:14:415楼

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

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

    +0添加回复

  • 回复
  • 小葫芦
  • 小葫芦    2017-04-10 13:14:413楼

    serialize

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

    +0添加回复

  • 回复
  • 小皮
  • 小皮    2017-04-10 13:14:412楼

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

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

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

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

    +0添加回复

  • 回复