PHPSPL,它值得使用还是原始数组函数更好?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (11)

我正在研究标准PHP库(SPL)。我之前只使用了数组,并且刚刚发现PHP有这么多标准类。但是手册中没有任何文字是否建议使用它。例如,他们明确建议使用foreach构造来迭代数组,因为它更快。那这个库呢?如果我需要在对象中存储一些数据,我应该为我的情况使用一些具体的SPL类,否则使用标准数组会更好?

提问于
用户回答回答于

你的问题有很多。你应该使用SPL数据结构吗?这取决于。

PHP数组可以充当地图,链表或数组。很少做你真正想要充当所有的这些东西一个单一的数据类型在同一时间,所以SPL数据类型的聚焦自然界中并非如此限定。实际上,大多数“外人”(以及一些“内部人士”)会认为PHP的阵列是一个讽刺。

PHP数组的主要缺点是它使用了大量的内存。即使你只是想要一个固定的,顺序的索引数组,你也需要把东西连接在一起并存储在键上。尽管如此,如果你主要追加数据并对它进行迭代,PHP的数组通常比对象类型快得多,可能是因为函数调用会减慢速度。

一般来说,我没有看到很多人使用SPL数据结构。大多数情况下,我认为,因为在PHP和Web应用程序的环境中,它们通常不太适用。你通常处理小型数组,其中内置运算符的方便性和数组函数超过了SPL类型的任何优点。

这就是说:

  • 如果你发现自己处于将数组用作链接列表的情况(在中间插入/删除),请尝试使用SPL双向链表之一。
  • 如果你发现自己使用大型索引数组,请尝试使用SPLFixedArray。他们一定会消耗更少的内存。
  • 如果你需要将对象映射为键,请使用SplObjectStorage(因为PHP数组不能与对象键一起使用)。
  • 如果你想保持数组排序的数据,请尝试其中一个堆。

扫码关注云+社区