亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么把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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號