為什么把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);
加了getIterator方法和不加getIterator方法,執行效果一樣啊,,這是怎么回事?
2019-02-14
在迭代器才沒有進行遍歷【沒有運行過$it->next();】的情況下,指針默認指向的是第一個元素,所以你不使指針歸零【$it->rewind();】也可以從第一個開始迭代遍歷。
視頻中,未加$it->rewind();?沒有遍歷出東西的原因是,這個迭代器$it?在之前還被foreach遍歷過一次使得他的指針到了最后一位。
2018-11-07
//迭代器 $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(); }