11

ArrayIterators から PHP SPL を学び始めました。通常の配列の代わりに SPL ArrayObject、ArrayIterator、RecursiveArrayIterator を使用する利点は何ですか?

a) SPL イテレータを使用したループはメモリ使用量を削減すると聞きました (しかし、なぜですか?)。メモリ使用量をどのように削減できるかがわからないため、これを信じるかどうかはわかりません。

b) RecursiveArrayIterator について話すと、コード行を節約できる場合があると言えます (2+ ではなく 1 つの foreach 構造を使用しています (配列の次元によって異なります))。

おそらく、私の質問は誰かにとって非常に簡単に思えるかもしれませんが、SPL に関する情報やドキュメントが少なすぎます。

ありがとうございました

4

1 に答える 1

8

あなたが見ている主な利点は、主に読みやすさの分野での効率的なデータ アクセスです。このようにして、オブジェクトを foreach の配列のように使用できるため、PHP とのより緊密な対話が可能になります。

a)メモリ使用量を減らす方法は、配列のコピーを作成しないことですが、エンジンで適切に行われた場合、配列が変更されるまで新しい参照である必要があり、実際にコピーされます。

b) 基本的に

この良い例は、SimpleXML拡張機能です。操作している PHP/XML オブジェクトも配列のように機能し、リスト内の要素の 1 つを foreach またはアクセスできるため、効率的に使用できます。タグ名または属性が必要な場合は、オブジェクトから配列を取得して反復処理し、別の操作を行う必要はありません。

于 2010-11-01T21:15:33.253 に答える