PHP 8.6.0 Beta 1 is available for testing

La clase ParentIterator

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

Introducción

Esta FilterIterator ampliada permite una iteración recursiva usando RecursiveIteratorIterator , que solamente muestra los elementos que tienen hijos.

Sinopsis de la clase

class ParentIterator extends RecursiveFilterIterator {
/* Métodos */
public function __construct (RecursiveIterator $iterator)
public function accept (): bool
public function getChildren (): ParentIterator
public function hasChildren (): bool
public function next (): void
public function rewind (): void
/* Métodos heredados */
public function FilterIterator::accept (): bool
public function FilterIterator::current (): mixed
public function FilterIterator::key (): mixed
public function FilterIterator::next (): void
public function FilterIterator::rewind (): void
public function FilterIterator::valid (): bool
public function IteratorIterator::current (): mixed
public function IteratorIterator::key (): mixed
public function IteratorIterator::next (): void
public function IteratorIterator::rewind (): void
public function IteratorIterator::valid (): bool
}

Tabla de contenidos

Found A Problem?

Learn How To Improve This PageSubmit a Pull RequestReport a Bug
+add a note

User Contributed Notes 2 notes

up
3
dn dot permyakov at gmail dot com
7 years ago
Easy example for understanding:
<?php
$iterator = new ParentIterator(
 new RecursiveArrayIterator(
 array(array(1, 2, 3), 'A', 'B', 'C')
 )
);
foreach ($iterator as $recursive) {
 foreach ($recursive as $value) {
 echo $value . PHP_EOL;
 }
}
?>

1
2
3
up
2
Anonymous
14 years ago
ParentIterator is just a RecursiveFilterIterator whos accept() method calls the RecursiveFilterIterator->hasChildren() method to filter itself.
Basically, it filters out leaf nodes. For example
This would yield all files and directories
<?php
$rdi = new RecursiveDirectoryIterator(__DIR__);
$iter = new RecursiveIteratorIterator($rdi, RecursiveIteratorIterator::CHILD_FIRST);
?>

wrapping that in a ParentIterator would filter it down to just directories
<?php
$rdi = new RecursiveDirectoryIterator(__DIR__);
$iter = new RecursiveIteratorIterator($rdi, RecursiveIteratorIterator::CHILD_FIRST);
$dirsOnly = new ParentIterator($iter);
?>
+add a note

AltStyle によって変換されたページ (->オリジナル) /