Php 使用SPL ArrayObject、ArrayIterator、RecursiveArrayIterator代替常规数组有什么好处?

Php 使用SPL ArrayObject、ArrayIterator、RecursiveArrayIterator代替常规数组有什么好处?,php,iterator,spl,Php,Iterator,Spl,我已经开始从ArrayIterator学习PHP SPL,我想知道使用SPL ArrayObject、ArrayIterator、RecursiveArrayIterator而不是常规数组的好处是什么 a) 我听说使用SPL迭代器的循环将减少内存使用(但为什么?)。我真的不知道该相信还是不相信,因为我不明白它如何减少内存使用 b) 谈到RecursiveArrayIterator,我们可以说有时它可以节省一些代码行(我们使用一个foreach构造,而不是2+(取决于数组维度)) 也许,我的问题对

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

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

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

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


谢谢

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

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

b) 本质上

扩展就是一个很好的例子。您正在与之交互的PHP/XML对象的行为也类似于一个数组,这使得它的使用效率更高,因为您只需foreach或访问列表中的一个元素即可。如果需要标记名或属性,不必从对象中获取数组,然后迭代并使用它执行其他操作。

Related:(2010年7月)