Рекурсивентертертертертер последний ребенок
Вопрос
Я повторяю многомерную массив с рецензионертератором и хотел бы иметь возможность знать, является ли текущий элемент последним ребенком глубины. Я думал об этом:
$iterator = new RecursiveIteratorIterator($array,
RecursiveIteratorIterator::SELF_FIRST);
foreach ($iterator as $val) {
$next = clone $iterator;
$next->next();
$lastChild = ($next->getDepth() < $iterator->getDepth());
}
Но рецензионертертертертер говорит, что это не клобно.
Решение
Фраза «Последний ребенок его глубины» не особо ясна. Не могли бы вы уточнить именно то, что вы имеете в виду; Предназначение для этого?
Если вы имеете в виду, совсем просто, что глубина изменится после текущего элемента, то (Recursive)CachingIterator
имеет удобное hasNext
Способ определить, имеет ли итератор, есть какие-либо дополнительные предметы. Чтобы привести пример соревнования, похожий на это в вопросе:
$array = array(
range(1,6),
range(7,8),
'foo' => range(1,3),
'bar' => range(4,5),
);
$rit = new RecursiveArrayIterator($array);
$iterator = new RecursiveIteratorIterator(
new RecursiveCachingIterator($rit),
RecursiveIteratorIterator::LEAVES_ONLY
);
foreach ($iterator as $val) {
$lastChild = !$iterator->hasNext();
if ($lastChild) {
echo "$val is the last child!\n";
}
}
Выходы:
6 is the last child!
8 is the last child!
3 is the last child!
5 is the last child!
Не связан с StackOverflow