لماذا التكرار على ArrayIterator ينتهي بحلقة لا نهاية لها؟

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

سؤال

المصفوفة الموجودة في الكود الخاص بي كبيرة جدًا لذا قمت بلصقها في Pastebin. http://pastebin.com/6tviT2Xj

لا أفهم لماذا أحصل على حلقة لا نهاية لها

منطق هذا البرنامج النصي هو:

$it = new ArrayIterator($options);
while($it->valid()) {
    print $it->key();
    print $it->current();
}
هل كانت مفيدة؟

المحلول

نظرا لأنك لا تتحرك أبدا في ITERATOR ( مع Arrayiterator :: Next () <) <) <) <) <) <) <) <) <) <) <) <) <) <) ).

giveacodicetagpre.

نصائح أخرى

يجب عليك استخدام $it->next(); وإلا فسوف تتقلب على نفس المفتاح إلى الأبد

أنت تكرار حول العنصر الحالي، فأنت بحاجة إلى القيام بتقديم الأجيال إلى النقطة / الذهاب إلى العنصر التالي

المشكلة الرئيسية هي عدم الاستخدام $it->next(); في الخاص بك ولكن لا يزال هناك الكثير لا يمنحك الإخراج المطلوب لأنه إذا قمت بتشغيل print $it->current(); سيعود فقط Array نظرًا لأنه لا يمكنك إخراج معلومات الصفيف باستخدام print.

يجب أن تستخدم RecursiveArrayIterator و RecursiveIteratorIterator لأنك تتعامل مع مجموعة متعددة الأبعاد

للحصول على جميع القيم حاول:

$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($options));
foreach ( $it as $key => $val ) {
    echo $key . ":" . $val . "\n";
}

شاهد العرض التوضيحي الكامل: http://codepad.viper-7.com/UqF18q

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