当前位置: 首页 > 后端技术 > PHP

PHP的迭代器(Iterator)

时间:2023-03-29 20:51:51 PHP

鍓嶆部涓婃鎴戜滑璁ㄨ浜哖HP鐨勭敓鎴愬櫒锛屼粖澶╂垜浠氨鏉ョ湅鐪婸HP鐨勮凯浠e櫒銆傜敓鎴愬櫒鍜岃凯浠e櫒鏈変粈涔堝尯鍒紵搴曠嚎锛氱敓鎴愬櫒鍙槸杩唬鍣ㄣ€備笌鏍囧噯PHP杩唬鍣ㄤ笉鍚岋紝PHP鐢熸垚鍣ㄩ€氳繃涓嶈姹傜被瀹炵幇Iterator鎺ュ彛鏉ュ噺杞荤被鐨勮礋鎷呫€傜敓鎴愬櫒璁$畻骞惰緭鍑哄€间互鎸夐渶杩唬銆傝繖瀵瑰簲鐢ㄧ▼搴忕殑鎬ц兘鏈夐噸澶у奖鍝嶃€傝瘯鎯筹紝濡傛灉鏍囧噯鐨凱HP杩唬鍣ㄧ粡甯稿湪鍐呭瓨涓繘琛岃凯浠f搷浣滐紝闇€瑕侀鍏堣绠楁暟鎹泦锛屾€ц兘浣庝笅锛涘鏋滈渶瑕佸澶ч噺鏁版嵁杩涜鐗瑰畾鐨勮绠楋紝瀵规€ц兘鐨勫奖鍝嶄細鏇村ぇ銆傛鏃讹紝鎴戜滑灏卞彲浠ヤ娇鐢ㄧ敓鎴愬櫒浜嗭紝鍗充娇瀹冭绠楀苟杈撳嚭鍚庣画鐨勫€硷紝涔熶笉浼氬崰鐢ㄥ疂璐电殑鍐呭瓨璧勬簮銆傝凯浠e櫒鐨勪綔鐢ㄦ槸浠€涔堬紵浣垮璞″彲杩唬骞惰〃鐜板緱鍍忓璞¢泦鍚堛€傜湅涓€閬撹吘璁潰璇曢锛岃瀵硅薄鍍忔暟缁勪竴鏍疯繘琛宖oreach寰幆锛岃姹傚睘鎬т负private銆傝繖涓棶棰樺疄闄呬笂鏄叧浜庤凯浠e櫒鐨勩€傝鎴戜滑鐪嬩竴涓嬭凯浠e櫒鐨勬帴鍙c€侷teratorextendsTraversable{/*method*/abstractpubliccurrent():mixedabstractpublickey():scalarabstractpublicnext():voidabstractpublicrewind():voidabstractpublicvalid():bool}瀹氫箟浜?涓娊璞℃柟娉曞湪鍏朵腑鏌ョ湅鏈€缁堢瓟妗堢被绀轰緥implementsIterator{private$_items=array(1,2,3,4,5,6,7);publicfunction__construct(){}//閲嶇疆涓虹涓€涓厓绱爌ublicfunctionrewind(){reset($this->_items);}//杩斿洖褰撳墠鍏冪礌publicfunctioncurrent(){returncurrent($this->_items);}//杩斿洖褰撳墠鍏冪礌涓簁eypublicfunctionkey(){returnkey($this->_items);}//杩斿洖涓嬩竴涓厓绱爌ublicfunctionnext(){returnnext($this->_items);}//妫€鏌ュ綋鍓嶅厓绱犳槸鍚︽湁鏁坧ublicfunctionvalid(){return($this->current()!==false);}}$sa=newsample();foreach($saas$key=>$val){鎵撳嵃$key銆傗€?>鈥濄€?val;}//output0=>11=>22=>33=>44=>55=>66=>7鎴戜滑閫氳繃foreach閬嶅巻瀵硅薄鐨勬椂鍊欙紝浼氬湪鍐呴儴璋冪敤rewind()閲嶇疆涓虹涓€涓厓绱爒alid()妫€鏌ュ綋鍓嶈浣嶇疆鏄惁鏈夋晥锛焎urrent()杩斿洖褰撳墠鍏冪礌key()杩斿洖褰撳墠鍏冪礌鐨刱eynext()鎸囧悜涓嬩竴涓厓绱犳劅璋㈡偍闃呰鏈枃銆傚鏋滄湁涓嶅鐨勫湴鏂癸紝璇锋寚鍑猴紝璋㈣阿馃檹