使用SPL ArrayObject,ArrayIterator,RecursiveArrayIterator而不是常规数组有什么好处?

Kir*_*lla 11 php spl iterator

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

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

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

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

谢谢

Rob*_*mos 8

您正在寻找高效数据访问的主要好处主要在于可读性方面.通过这种方式,您可以像使用foreach中的数组一样使用对象,以便与PHP进行更密切的交互.

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

b)基本上

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