PHP Iterator 100 本ノック ArrayIterator
配列を反復可能オブジェクトにするってだけ
とはいえ,こいつ意外と色んなインタフェース実装してる
SeekableIterator
任意の場所までジャンプできる seek()を実装させる
これはあくまで seek であって get by key ではないことに注意
前にも後ろにも飛ぶことができる.すごろくを実装するのにピッタリ!
ArrayAccess
オブジェクトだけど配列みたいなアクセスができる($obj['key'] みたいな)
Serializable
serialize()とunserialize()が呼べる
シリアライズの方法は実装者にお任せだが,何らかの形にシリアライズできることは保証される
Contable
count() で要素数を数えられる
ArrayIterator と兄弟みたいなんが ArrayObject
実装してるインタフェースが似ていて,
IteratorAggregate
ArrayAccess
Serializable
Countable
違いは SeekableIterator の代わりに,ArrayObject は IteratorAggregate を実装している.
code:php
<?php
$iter = $arr->getIterator();
var_dump($iter);
これをやると
object(ArrayIterator)#2 (1) {
object(ArrayObject)#1 (1) {
array(2) {
string(5) "apple"
string(6) "orange"
}
}
}
ArrayIterator が出てくる!
あとは,
append()
getArrayCopy()
ソート系メソッド
asort
ksort
natsort
etc...
あたりは独自のメソッドになっている