PHP: SeekableIterator arabirim uygulama

1 Cevap php

Şu anda SeekableIterator arabirimini uygulayan bir sınıf yazıyorum ve bir sorun haline çalıştırmak. Ben kullanıyorum ve sınıfın dışında her ikisi üzerinden yineleme için izin istiyorum iki dahili diziler var. İlk sınıf içindeki iki dizileri birleştirme olmadan bunu yapmak için kolay bir yolu var mı? İşte yapmak ne çalışıyorum hızlı bir örnek:

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;
}

1 Cevap

Güncel indeks daha küçükse, bu diziler hem sayısal, endeksli varsayarsak

count($this->_books);

Sonra geri dönüş

$this->_books[$index];

Aksi takdirde, endeksi (kitap) + sayısı (dergi) saymak daha küçük ise, dönüş

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

Hem başarısız, bir OutOfBoundsException için olabilir.

Her şey sadece yerine girmelidir.