函式名:ArrayObject::setIteratorClass()
描述:設定ArrayObject物件的迭代器的類名。該方法用於指定一個自定義的迭代器類,替代預設的ArrayIterator類來迭代ArrayObject物件。
用法:ArrayObject::setIteratorClass(string $iterator_class) : void
引數:
- $iterator_class:表示自定義迭代器類的類名,必須是一個實現Iterator介面的類名。
返回值:該方法沒有返回值。
示例程式碼:
// 建立一個ArrayObject物件
$arrayObj = new ArrayObject(['apple', 'banana', 'orange']);
// 定義自定義迭代器類
class CustomIterator implements Iterator {
private $position = 0;
private $array;
public function __construct($array) {
$this->array = $array;
}
public function current() {
return $this->array[$this->position];
}
public function key() {
return $this->position;
}
public function next() {
$this->position++;
}
public function rewind() {
$this->position = 0;
}
public function valid() {
return isset($this->array[$this->position]);
}
}
// 設定ArrayObject物件的迭代器為自定義迭代器
ArrayObject::setIteratorClass('CustomIterator');
// 建立ArrayObject物件的迭代器
$iterator = $arrayObj->getIterator();
// 使用自定義迭代器遍歷ArrayObject物件
foreach ($iterator as $key => $value) {
echo "<p>鍵:$key,值:$value</p>";
}
輸出結果:
<p>鍵:0,值:apple</p>
<p>鍵:1,值:banana</p>
<p>鍵:2,值:orange</p>
以上示例程式碼中,首先我們建立了一個ArrayObject物件 $arrayObj
,然後定義了一個自定義迭代器類 CustomIterator
,該類實現了 Iterator
介面的方法,並對應實現了 current()
、key()
、next()
、rewind()
和 valid()
方法。
接下來,我們使用 ArrayObject::setIteratorClass()
方法,將 ArrayObject 物件的迭代器類設定為自定義迭代器類 CustomIterator
。
最後,透過呼叫 $arrayObj->getIterator()
獲取到自定義迭代器物件 $iterator
,並使用 foreach
迴圈來遍歷 $iterator
取得 ArrayObject 物件中的值和鍵,並輸出每個元素的值和鍵。
輸出結果中,每個元素的值和鍵會被包裹在 <p>
標籤中,格式化成 HTML。