В чем преимущества использования SPL ArrayObject, ArrayIterator, RecursiveArrayIterator вместо обычных массивов?

Я начал изучать PHP SPL из ArrayIterators, и я хотел бы знать, какие преимущества могут использовать SPL ArrayObject, ArrayIterator, RecursiveArrayIterator вместо обычных массивов?

a) Я слышал, что циклы, использующие итераторы SPL, уменьшат использование памяти (но почему?). Я действительно не знаю, верить этому или нет, потому что я не понимаю, как это может уменьшить использование памяти.

б) Говоря о RecursiveArrayIterator, мы можем сказать, что иногда он мог бы сэкономить некоторые строки кода (мы используем одну конструкцию foreach вместо 2+ (зависит от размера массива)).

Вероятно, мои вопросы могут показаться очень легкими для кого-то, но информации о SPL слишком мало информации / документации.

спасибо

Основное преимущество вы смотрите на эффективный доступ к данным в основном в области удобочитаемости. Таким образом, вы можете использовать объект так же, как массив в foreach, чтобы обеспечить более тесное взаимодействие с PHP.

a) Способ сокращения использования памяти заключается в том, что вы не делаете копию массива, но если все сделано правильно в движке, то это должна быть новая ссылка до тех пор, пока массив не будет изменен, а затем будет скопирован.

б) По существу

Хорошим примером этого может быть расширение SimpleXML . Объект PHP / XML, с которым вы взаимодействуете, также действует как массив, который делает его эффективным, потому что вы можете просто выбрать или получить доступ к одному из элементов в списке. Вам не нужно захватывать массив из объекта, а затем перебирать его и делать с ним что-то еще, если вам нужно имя тега или атрибут.