我已经开始从ArrayIterators学习PHP SPL了,我想知道使用SPL ArrayObject,ArrayIterator,RecursiveArrayIterator而不是常规数组有什么好处?
a)我听说使用SPL迭代器的循环会减少内存使用量(但为什么呢?)。我真的不知道相信这个或不相信,因为我不明白它如何减少内存使用。
b)谈到RecursiveArrayIterator,我们可以说有时它可以保存一些代码行(我们使用的是一个foreach构造而不是2+(取决于数组维度))。
可能我的问题对某些人来说似乎很容易,但关于SPL的信息/文档太少了。
谢谢
答案 0 :(得分:8)
您正在寻找有效数据访问的主要好处,主要是在可读性方面。通过这种方式,您可以像使用foreach中的数组一样使用对象,从而与PHP进行更密切的交互。
a)减少内存使用量的方法是不复制数组,但如果在引擎中正确完成,那么它应该是一个新的引用,直到数组被修改然后实际复制。
b)基本上
这方面的一个很好的例子是SimpleXML扩展名。您正在与之交互的PHP / XML对象也像一个数组,它使得它的使用效率很高,因为您可以只访问或访问列表中的一个元素。您不必从对象中获取数组,然后迭代并使用它执行其他操作(如果您需要标记名称或属性)。