<?php
class MyIterator implements Iterator
{
private $var = array();
public function __construct($array)
{
if (is_array($array)) {
$this->var = $array;
}
}
public function rewind() {
echo "rewinding\n";
reset($this->var);
}
public function current() {
$var = current($this->var);
echo "current: $var\n";
return $var;
}
public function key() {
$var = key($this->var);
echo "key: $var\n";
return $var;
}
public function next() {
$var = next($this->var);
echo "next: $var\n";
return $var;
}
public function valid() {
$var = $this->current() !== false;
echo "valid: {$var}\n";
return $var;
}
}
$values = array(1,2,3);
$it = new MyIterator($values);
foreach ($it as $a => $b) {
print "$a: $b\n";
}
?>
Rutin di atas akan menghasilkan:
menggulung semula
semasa: 1
sah: 1
semasa: 1
kunci: 0
0: 1
seterusnya: 2
semasa: 2
sah: 1
semasa: 2
kunci: 2
1:
t: 1
semasa: 3
sah: 1
semasa: 3
kunci: 2
2: 3
seterusnya:
semasa:
sah:
Tetapi saya tidak faham susunan kaedah yang terkandung dalam lelaran dipanggil. Bolehkah sesiapa menerangkannya? Kod sumber kelas Iterator tidak ditemui Mengapa kaedah sah() dipanggil dahulu?
Bukankah susunan yang anda tentukan sendiri?
Anda menggunakan fungsi seterusnya dan fungsi semasa untuk menggerakkan penunjuk tatasusunan
Pelajar hanya menyediakan format yang dipersetujui untuk melintasi pengumpulan data dalaman Untuk pelaksanaan dalaman (iaitu, tertib lintasan dalaman), anda boleh mengisihnya dalam tertib hadapan, tertib terbalik atau tertib rawak, dsb.
.