1

現在、SeekableIterator インターフェイスを実装するクラスを作成していて、問題が発生しました。使用している 2 つの内部配列があり、クラスの外部から両方を反復できるようにしたいと考えています。最初にクラス内で 2 つの配列をマージせずにこれを行う簡単な方法はありますか? これが私がやろうとしていることの簡単な例です:

class BookShelf implements ArrayAccess, Countable, SeekableIterator {
    protected $_books = array(...);
    protected $_magazines = array(...);

    /**** CLASS CONTENT HERE ****/
}

$shelf = new BookShelf();

// Loops through both arrays, first books (if any) and then magazines (if any)
foreach($shelf as $item) {
    echo $item;
}
4

1 に答える 1

1

これらの配列が両方とも数値でインデックス付けされていると仮定すると、現在のインデックスがより小さい場合

count($this->_books);

それから戻る

$this->_books[$index];

それ以外の場合、インデックスが count(books)+count(magazines) より小さい場合は、戻ります

$this->_magazines[$index-count($this->_books)]

両方に失敗すると、OutOfBoundsException が発生する可能性があります。

他のすべては、適切な場所に収まる必要があります。

于 2008-12-29T19:42:26.387 に答える