--TEST--ZE2 iterators and foreach--FILE--<?phpclass c_iter implements Iterator {private $obj;private $num = 0;function __construct($obj) {echo __METHOD__ . "\n";$this->num = 0;$this->obj = $obj;}function rewind() {}function valid() {$more = $this->num < $this->obj->max;echo __METHOD__ . ' = ' .($more ? 'true' : 'false') . "\n";return $more;}function current() {echo __METHOD__ . "\n";return $this->num;}function next() {echo __METHOD__ . "\n";$this->num++;}function key() {echo __METHOD__ . "\n";switch($this->num) {case 0: return "1st";case 1: return "2nd";case 2: return "3rd";default: return "???";}}}class c implements IteratorAggregate {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";}print "Done\n";exit(0);?>--EXPECT--===Array===array:0array:1array:2===Manual===c::getIteratorc_iter::__constructc_iter::valid = truec_iter::current0c_iter::nextc_iter::valid = truec_iter::current1c_iter::nextc_iter::valid = truec_iter::current2c_iter::nextc_iter::valid = false===foreach/std===c::getIteratorc_iter::__constructc_iter::valid = truec_iter::currentobject:0c_iter::nextc_iter::valid = truec_iter::currentobject:1c_iter::nextc_iter::valid = truec_iter::currentobject:2c_iter::nextc_iter::valid = false===foreach/rec===c::getIteratorc_iter::__constructc_iter::valid = truec_iter::currentc::getIteratorc_iter::__constructc_iter::valid = truec_iter::currentdouble:0:0c_iter::nextc_iter::valid = truec_iter::currentdouble:0:1c_iter::nextc_iter::valid = truec_iter::currentdouble:0:2c_iter::nextc_iter::valid = falsec_iter::nextc_iter::valid = truec_iter::currentc::getIteratorc_iter::__constructc_iter::valid = truec_iter::currentdouble:1:0c_iter::nextc_iter::valid = truec_iter::currentdouble:1:1c_iter::nextc_iter::valid = truec_iter::currentdouble:1:2c_iter::nextc_iter::valid = falsec_iter::nextc_iter::valid = truec_iter::currentc::getIteratorc_iter::__constructc_iter::valid = truec_iter::currentdouble:2:0c_iter::nextc_iter::valid = truec_iter::currentdouble:2:1c_iter::nextc_iter::valid = truec_iter::currentdouble:2:2c_iter::nextc_iter::valid = falsec_iter::nextc_iter::valid = false===foreach/key===c::getIteratorc_iter::__constructc_iter::valid = truec_iter::currentc_iter::keyobject:1st=>0c_iter::nextc_iter::valid = truec_iter::currentc_iter::keyobject:2nd=>1c_iter::nextc_iter::valid = truec_iter::currentc_iter::keyobject:3rd=>2c_iter::nextc_iter::valid = falseDone
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。