11

我已经开始从 ArrayIterators 学习 PHP SPL,我想知道使用 SPL ArrayObject、ArrayIterator、RecursiveArrayIterator 而不是常规数组有什么好处?

a) 我听说使用 SPL 迭代器的循环会减少内存使用量(但为什么?)。我真的不知道是否相信这一点,因为我不明白它如何减少内存使用量。

b)谈到 RecursiveArrayIterator,我们可以说有时它可以节省一些代码行(我们使用一个 foreach 构造而不是 2+(取决于数组维度))。

也许,我的问题对某些人来说似乎很容易,但是关于 SPL 的信息/文档太少了。

谢谢

4

1 回答 1

8

您主要在可读性方面查看有效数据访问的主要好处。通过这种方式,您可以像在 foreach 中使用数组一样使用对象,从而与 PHP 进行更密切的交互。

a)减少内存使用的方法是不复制数组,但如果在引擎中正确完成,那么它应该是一个新的引用,直到数组被修改然后它才被实际复制。

b) 本质上

SimpleXML扩展就是一个很好的例子。您正在与之交互的 PHP/XML 对象也像一个数组,这使得它使用起来很高效,因为您可以只 foreach 或访问列表中的一个元素。如果您想要标签名称或属性,您不必从对象中获取数组然后迭代并用它做其他事情。

于 2010-11-01T21:15:33.253 回答