为了账号安全,请及时绑定邮箱和手机立即绑定

为什么把getIterator这一段注释掉,也可以顺利往下执行排序,可以循环出来结果??

$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);

https://img1.sycdn.imooc.com//5be263db000193a203170164.jpg

加了getIterator方法和不加getIterator方法,执行效果一样啊,,这是怎么回事?

正在回答

2 回答

在迭代器才没有进行遍历【没有运行过$it->next();】的情况下,指针默认指向的是第一个元素,所以你不使指针归零【$it->rewind();】也可以从第一个开始迭代遍历。

视频中,未加$it->rewind(); 没有遍历出东西的原因是,这个迭代器$it 在之前还被foreach遍历过一次使得他的指针到了最后一位。

0 回复 有任何疑惑可以回复我~
//迭代器
$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();这一行注释掉了,居然也行执行啊??有谁试过吗?解释一下,


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么把getIterator这一段注释掉,也可以顺利往下执行排序,可以循环出来结果??

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信