This iterator has a misleading name and description - it actually acts as a parallel iterator: You attach one or more iterators with a key, integer or NULL, and when you iterate over the MultipleIterator, as the result for current() you get ALL results from all attached iterators as an array (under the key or integer you attached it with), and the same is true for the key() call.
valid() will be valid if any or all iterators are valid, depending on the setting of the $flags - with ANY, you can iterate over a set of iterators with some of them ending before others, and get NULL results from these iterators until the last iterator is at it's end. With ALL, iteration stops when the first iterator stops delivering results.
next() and rewind() will be called on all attached iterators in every case.
<?php
$it1 = new ArrayIterator(array(1,2,3));
$it2 = new ArrayIterator(array(4,5,6));
$multipleIterator = new MultipleIterator(MultipleIterator::MIT_NEED_ALL|MultipleIterator::MIT_KEYS_ASSOC);
$multipleIterator->attachIterator($it1, 1);
$multipleIterator->attachIterator($it2, 'second');
foreach ($multipleIterator as $key => $value) {
echo "Key\n"; var_dump($key);
echo "Value\n"; var_dump($value);
echo "---next---\n";
}
?>
Result with PHP 5.5.0 and up:
Key
array(2) {
[1]=>
int(0)
["second"]=>
int(0)
}
Value
array(2) {
[1]=>
int(1)
["second"]=>
int(4)
}
---next---
Key
array(2) {
[1]=>
int(1)
["second"]=>
int(1)
}
Value
array(2) {
[1]=>
int(2)
["second"]=>
int(5)
}
---next---
Key
array(2) {
[1]=>
int(2)
["second"]=>
int(2)
}
Value
array(2) {
[1]=>
int(3)
["second"]=>
int(6)
}
---next---
Note that PHP 5.4 and 5.3 do not support accessing the key() values in foreach loops because they expect them to not be an array - doing so will cause "Warning: Illegal type returned from MultipleIterator::key()" and the result of (int)0 as the key for all iterations.
Without the MultipleIterator::MIT_KEYS_ASSOC flag, the MultipleIterator will create numeric indices based on the order of attachment.
PHP.mk документација
MultipleIterator
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Патека
class.multipleiterator.php
Локална патека за оваа страница.
Извор
php.net/manual/en
Оригиналниот HTML се реупотребува и локално се стилизира.
Режим
Прокси + превод во позадина
Кодовите, табелите и белешките остануваат читливи во истиот тек.
Референца
class.multipleiterator.php
MultipleIterator
Референца за `class.multipleiterator.php` со подобрена типографија и навигација.
Класата MultipleIterator
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
Вовед
Итератор што последователно ги итерира сите прикачени итератори
Синопсис на класата
/* Константи */
/* Методи */
public __construct(int
}$flags = MultipleIterator::MIT_NEED_ALL | MultipleIterator::MIT_KEYS_NUMERIC)Претходно дефинирани константи
MultipleIterator::MIT_NEED_ANY-
Не барајте сите под-итератори да бидат валидни при итерација.
MultipleIterator::MIT_NEED_ALL-
Барајте сите под-итератори да бидат валидни при итерација.
MultipleIterator::MIT_KEYS_NUMERIC-
Клучовите се создаваат од позицијата на под-итераторите.
MultipleIterator::MIT_KEYS_ASSOC-
Клучовите се создаваат од поврзаните информации на под-итераторите.
Содржина
- MultipleIterator::attachIterator — Прикачува информации за итератор
- MultipleIterator::__construct — Конструира нов MultipleIterator
- MultipleIterator::containsIterator — Проверува дали е прикачен итератор
- MultipleIterator::countIterators — Го добива бројот на прикачени инстанци на итератор
- MultipleIterator::current — Ги добива регистрираните инстанци на итератор
- MultipleIterator::detachIterator — Одвојува итератор
- MultipleIterator::getFlags — Ги добива информациите за знамето
- MultipleIterator::key — Ги добива регистрираните инстанци на итератор
- MultipleIterator::next — Ги поместува сите прикачени инстанци на итератор напред
- MultipleIterator::rewind — Ги враќа сите прикачени инстанци на итератор на почеток
- MultipleIterator::setFlags — Поставува знамиња
- MultipleIterator::valid — Проверува валидност на под-итераторите
Белешки од корисници 1 белешка
sven на rtbg dot de ¶
пред 10 години