慕仔9666172
2018-11-07 12:03
$arr = array( 'name'=>'Danniel', 'age'=>18, 'sex'=>'boy', 'tel'=>'13899999999', 'city'=>'Beijing' ); $it = new ArrayObject($arr); //$it = $it->getIterator(); $it->ksort(); foreach ($it as $k=>$v){ echo $k.'=>'.$v.PHP_EOL; } //print_r($it);
加了getIterator方法和不加getIterator方法,执行效果一样啊,,这是怎么回事?
在迭代器才没有进行遍历【没有运行过$it->next();】的情况下,指针默认指向的是第一个元素,所以你不使指针归零【$it->rewind();】也可以从第一个开始迭代遍历。
视频中,未加$it->rewind(); 没有遍历出东西的原因是,这个迭代器$it 在之前还被foreach遍历过一次使得他的指针到了最后一位。
//迭代器 $arr = array( 'name'=>'Danniel', 'age'=>'18', 'sex'=>'boy', 'tel'=>'13899999999', 'city'=>'Beijing' ); $obj = new ArrayObject($arr); $it = $obj->getIterator(); //$it->rewind(); while ($it->valid()){ echo $it->key().'=>'.$it->current().PHP_EOL; $it->next(); }
还有这段代码里面,把//$it->rewind();这一行注释掉了,居然也行执行啊??有谁试过吗?解释一下,
站在巨人的肩膀上写代码—SPL
22765 学习 · 108 问题
相似问题