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

发布于 2022-08-24 10:30:45 字数 428 浏览 8 评论 0

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

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

叶落知秋 2022-08-31 10:30:45

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

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

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

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

葬﹪忆之殇 2022-08-31 10:30:45

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

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

送舟行 2022-08-31 10:30:45

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

梦在深巷 2022-08-31 10:30:45

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

小霸王臭丫头 2022-08-31 10:30:45

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

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

狼性发作 2022-08-31 10:30:45

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

書生途 2022-08-31 10:30:45

serialize

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

得不到的就毁灭 2022-08-31 10:30:45

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

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

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

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

原野 2022-08-31 10:30:45

看需求.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文