PANOV_DEV
@PANOV_DEV

Есть ли listIterator в php?

Увидел в коде java такое this.test.listIterator().add(...); как он называется в php?

Нашёл только ArrayIterator но мне кажется это не оно, а если это оно, как его заиспользовать как в java (верху)?
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 3
vabka
@vabka
Токсичный шарпист
Хоть бы посмотрел что он делает:
https://docs.oracle.com/javase/8/docs/api/java/uti...

Судя по описанию ArrayIterator - они достаточно похожие и вроде делают одно и то же.
https://www.php.net/manual/ru/class.arrayiterator.php
Даже свой add есть - append()
Ответ написан
Комментировать
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Обычно итераторы в РНР не нужны - всё делается простейшими средствами типа foreach.
Я так понимаю, что в данном случае нужен обычный оператор присвоения
$this->test[] = ...
Ответ написан
gzhegow
@gzhegow
aka "ОбнимиБизнесмена"
Как сказал Ипатьев, в php всё делается с помощью цикла foreach (да, здесь не только for и while), а чтобы получать курсор - у каждого списка или хешмапа (здесь для удобства массив это и то и другое, что закинешь внутрь тем и будет) - есть внутренний указатель который можно двигать функциями current()/prev()/next()/reset()/end().

Итераторы есть, но ими пользуются реже. В основном чтобы обходить директории рекурсивно, или многоуровневые хешмапы с путём, для стеков и рекурсий, и конечно для генераторов.

ArrayIterator() применяется почти никогда, если применяется то разве что для сведения нескольких "итерабельных" типов к единому способу обхода (чрезвычайно редкая задача), особенно когда в php появились интерфейсы \Traversable и проверка is_iterable(), позволяющая тупо передать что-угодно в foreach() чтобы его обойти.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы