{ public $max = 3; function getIterator() { echo __METHOD__ . "\n"; return new c_iter($this); } } echo "===Array===\n"; $a = array(0, 1, 2); foreach ($a as $v) { echo "array:{$v}\n"; } echo "===Manual===\n"; $t = new c(); for ($iter = $t->getIterator(); $iter->valid(); $iter->next()) { echo $iter->current() . "\n"; } echo "===foreach/std===\n"; foreach ($t as $v) { echo "object:{$v}\n"; } echo "===foreach/rec===\n"; foreach ($t as $v) { foreach ($t as $w) { echo "double:{$v}:{$w}\n"; } } echo "===foreach/key===\n"; foreach ($t as $i => $v) { echo "object:{$i}=>{$v}\n";