مبدأ العمل
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 كثافة العمليات (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، وآمل أن يكون مفيدًا للجميع.