慕仔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
22777 学习 · 108 问题
相似问题