หลักการทำงาน
1. ก่อนการวนซ้ำครั้งแรก ให้รันเมธอด iterator::rewind()
รันเพียงครั้งเดียว โดยส่งคืนองค์ประกอบแรกของตัววนซ้ำ แต่เมธอดไม่มีค่าส่งคืน
2. ตรวจสอบว่าองค์ประกอบแรกถูกต้องหรือไม่
วิธีการรับรองความถูกต้องสามารถปรับแต่งได้ หากค่าที่ส่งคืนเป็นจริง การดำเนินการจะดำเนินต่อไป หากค่าที่ส่งคืนเป็นเท็จ การวนซ้ำจะสิ้นสุดลง
3. foreach ยังคงเรียก Iterator ต่อไป
ส่งกลับคีย์และค่าของคุณลักษณะที่ระบุ
4. เนื้อความวิธีการของ foreach
var_dump($คีย์,$มูลค่า)
5. หลังจากการวนซ้ำแต่ละครั้ง ให้เรียกตัววนซ้ำเพื่อกำหนดองค์ประกอบถัดไปและทำซ้ำขั้นตอนที่สอง
ตัวอย่าง
string(18) "myIterator::rewind" //เรียกเมธอดการย้อนกลับก่อนที่การวนซ้ำจะเริ่มต้น กลับไปยังองค์ประกอบแรกของตัววนซ้ำ และดำเนินการ $this->position = 1; string(17) "myIterator::valid" //ตรวจสอบว่าองค์ประกอบปัจจุบัน $this->array[1] นั้นถูกต้องหรือไม่ และดำเนินการต่อไปหากถูกต้อง string(19) "myIterator::current" // คืนค่าที่สอดคล้องกับองค์ประกอบปัจจุบัน $this->array[0]='firstelement' string(15) "myIterator::key" // คืนคีย์ขององค์ประกอบปัจจุบัน $this->position = 1 int(1) //var_dump($คีย์) สตริง (12) "องค์ประกอบที่สอง" //var_dump($value) string(16) "myIterator::next" //เลื่อนไปยังองค์ประกอบถัดไป++$this->position=2 string(17) "myIterator::valid" //ตรวจสอบว่าองค์ประกอบปัจจุบัน $this->array[2] นั้นถูกต้องหรือไม่ และดำเนินการต่อไปหากถูกต้อง string(19) "myIterator::current" //ทำซ้ำขั้นตอนก่อนหน้า string(15) "myIterator::key" //ทำซ้ำขั้นตอนก่อนหน้า int(2) //ทำซ้ำขั้นตอนก่อนหน้า string(11) "lastelement" //ทำซ้ำขั้นตอนก่อนหน้า string(16) "myIterator::next" //เลื่อนไปยังองค์ประกอบถัดไป++$this->position=3 string(17) "myIterator::valid" //ตรวจสอบว่าองค์ประกอบปัจจุบัน $this->array[3] ถูกต้องหรือไม่ ให้ออกจากการแวะผ่านหากไม่ถูกต้อง
ข้างต้นเป็นการวิเคราะห์หลักการทำงานของ PHP iterator ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน