Iterator memanjangkan antara muka abstrak Boleh dilalui. PHP menyediakan beberapa iterator terbina dalam (dipanggil SPL iterator) untuk banyak fungsi biasa. Contohnya ArrayIterator, DirectoryIterator dll. Kelas pengguna yang melaksanakan antara muka Iterator harus melaksanakan kaedah abstrak yang ditakrifkan di dalamnya.
Iterator extends Traversable { /* Methods */ abstract public current ( void ) : mixed abstract public key ( void ) : scalar abstract public next ( void ) : void abstract public rewind ( void ) : void abstract public valid ( void ) : bool }
Iterator::current — Mengembalikan elemen semasa
Iterator::key — Mengembalikan kunci elemen semasa
Iterator::next element — Beralih ke item berikutnya — Akan iterate Iterator memundurkan semula elemen pertama
Iterator::valid — Semak sama ada kedudukan semasa adalah sah
Apabila melaksanakan antara muka
IteratorAggregateatau Iterator, mereka mesti disenaraikan sebelum nama mereka dalam klausa. Contoh Lelang
Dalam skrip PHP berikut, kelas yang melaksanakan antara muka mengandungi pembolehubah peribadi sebagai tatasusunan. Dengan melaksanakan kaedah abstrak iterator, kita boleh mengulangi tatasusunan menggunakan gelungnext(). Contoh
<?php class myIterator implements Iterator { private $index = 0; private $arr = array(10,20,30,40); public function __construct() { $this->index = 0; } public function rewind() { $this->index = 0; } public function current() { return $this->arr[$this->index]; } public function key() { return $this->index; } public function next() { ++$this->index; } public function valid() { return isset($this->arr[$this->index]); } } ?>
$it = new myIterator(); foreach($it as $key => $value) { echo "$key=>". $value ."</p><p>"; }
memundurkan lelaran. Contoh
$it->rewind(); do { echo $it->key() . "=>" .$it->current() . "</p><p>"; $it->next(); } while ($it->valid());
0=>10 1=>20 2=>30 3=>40
Atas ialah kandungan terperinci Antara muka PHP Iterable. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!