(PHP 5, PHP 7, PHP 8)
Класс разрешает удаление элементов, и изменение ключей или значений при итерации по массивам или объектам.
Для многократного перебора одного и того же массива рекомендуют создавать
экземпляр класса ArrayObject. Конструктор класса принимает
исходный массив и сохраняет массив внутренне. Затем к элементам внутреннего массива
обращаются либо путём передачи объекта ArrayObject в конструкцию foreach,
при которой объект массива неявно создаёт экземпляр итератора ArrayIterator,
либо путём вызова метода ArrayObject::getIterator() вручную.
ArrayIterator::STD_PROP_LISTПри установке флага свойства объекта сохраняют стандартное поведение. Вызов на объекте функции var_dump() показывает, что свойства хранятся стандартно, а во внутреннее хранилище попадают только элементы массива. При итерации по объекту языковой конструкцией foreach или другими средствами доступа к спискам выдаются только элементы хранилища. При этом доступ к элементам хранилища возможен только через квадратные скобки.
ArrayIterator::ARRAY_AS_PROPSПри установке флага свойства объекта и элементы массива сохраняются во внутреннем хранилище и при итерации по объекту выдаются как элементы единого списка. Флаг разрешает обращаться к элементам внутреннего хранилища для чтения или записи как через синтаксис квадратных скобок, так и через оператор доступа к свойствам объекта.