首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP SPL,是值得使用还是原始数组函数更好?

PHP SPL,是值得使用还是原始数组函数更好?
EN

Stack Overflow用户
提问于 2012-07-08 06:24:32
回答 1查看 4.9K关注 0票数 23

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-08 13:22:30

你的问题有很多。您是否应该使用SPL数据结构?那得看情况。

PHP数组可以充当映射、链表或数组。很少需要一种数据类型同时充当所有这些内容,因此SPL数据类型的重点性质并不是如此有限。事实上,大多数“局外人”(以及一些“局内人”)会认为PHP的数组是一种讽刺。

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

一般来说,我没有看到很多人使用SPL数据结构。我认为,主要是因为在PHP和web应用程序的上下文中,它们通常不是很适用。您通常在处理小数组,其中内置运算符和数组函数的便利性超过了SPL类型的任何优点。

这就是说:

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

对本机数组和SPL对象进行基准测试,并使用任何一个具有适合您的内存+速度+简单性折衷的对象。

票数 36
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11379140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档