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

发布于 2024-09-30 08:25:30 字数 337 浏览 4 评论 0原文

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

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

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

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

谢谢

I've started to learn PHP SPL from ArrayIterators and I'd like to know what are the benefits of using SPL ArrayObject, ArrayIterator, RecursiveArrayIterator instead of regular arrays?

a) I've heard that loops using SPL iterators will reduce memory usage (but why?). I don't really know to believe this or no because I don't understand how can it reduce memory usage.

b) Talking about RecursiveArrayIterator we can say that sometimes it could save some lines of code (we're using one foreach construction instead of 2+ (depends on array dimension)).

Probably, my questions could seem to be very easy for somebody, but there are too little information/documentation about SPL.

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

月朦胧 2024-10-07 08:25:30

您所关注的高效数据访问的主要好处主要集中在可读性方面。这样你就可以像 foreach 中的数组一样使用对象,从而与 PHP 进行更紧密的交互。

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

b) 本质上

SimpleXML 扩展就是一个很好的例子。您与之交互的 PHP/XML 对象也像一个数组一样工作,这使得它使用起来非常高效,因为您只需 foreach 或访问列表中的元素之一。如果您需要标签名称或属性,则不必从对象中获取数组,然后迭代并对其执行其他操作。

The primary benefit you're looking at efficient data access mostly in the area of readability. This way you can use object just like an array in a foreach so a closer interaction with PHP.

a) The way you reduce memory usage is by not making a copy of the array but if done properly in the engine then it should be a new reference until the array is modified then it's actually copied.

b) Essentially

A good example of this would be the SimpleXML extension. The PHP/XML object you're interacting with also acts like an array which makes it efficient to use because you can just foreach or access one of the elements within the list. You don't have to grab an array from the object and then iterate over and do something else with it if you want the tag name or an attribute.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文