ما هي فوائد استخدام SPL ArrayObject ، ArrayIratorator ، RecursiveArrayiterator بدلاً من المصفوفات العادية؟

StackOverflow https://stackoverflow.com/questions/4072927

  •  28-09-2019
  •  | 
  •  

سؤال

لقد بدأت في تعلم PHP SPL من Arrayiterators وأود أن أعرف ما هي فوائد استخدام SPL ArrayObject ، ArrayIratorator ، RecursiveArrayiterator بدلاً من المصفوفات العادية؟

أ) سمعت أن الحلقات التي تستخدم تكرارات SPL ستقلل من استخدام الذاكرة (ولكن لماذا؟). لا أعرف حقًا أن أصدق ذلك أو لا لأنني لا أفهم كيف يمكن أن يقلل من استخدام الذاكرة.

ب) الحديث عن RecursiveArrayiterator ، يمكننا القول أنه في بعض الأحيان يمكن أن يوفر بعض خطوط التعليمات البرمجية (نحن نستخدم بناء فورتش واحد بدلاً من 2+ (يعتمد على بُعد الصفيف)).

ربما ، قد تبدو أسئلتي سهلة للغاية بالنسبة لشخص ما ، ولكن هناك القليل من المعلومات/الوثائق حول SPL.

شكرًا لك

هل كانت مفيدة؟

المحلول

الفائدة الأساسية التي تبحث عنها في الوصول الفعال للبيانات في الغالب في مجال قابلية القراءة. وبهذه الطريقة ، يمكنك استخدام الكائن تمامًا مثل صفيف في فورش ، لذا فإن التفاعل الدقيق مع PHP.

أ) الطريقة التي تقلل بها من استخدام الذاكرة هي عدم عمل نسخة من الصفيف ولكن إذا تم القيام به بشكل صحيح في المحرك ، فيجب أن يكون مرجعًا جديدًا حتى يتم تعديل الصفيف ثم يتم نسخه بالفعل.

ب) بشكل أساسي

مثال جيد على ذلك سيكون Simplexml امتداد. يتصرف كائن PHP/XML الذي تتفاعل معه أيضًا مثل صفيف يجعله فعالًا في استخدامه لأنه يمكنك فقط الحصول على أحد العناصر الموجودة في القائمة. ليس عليك الحصول على صفيف من الكائن ثم التكرار والقيام بشيء آخر معه إذا كنت تريد اسم العلامة أو السمة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top