> David Lidstone schreef:
>
>> Hi
>>
>> I am getting myself quite confused while trying to use SPL to recursively
>> iterate through a collection of objects, and any help would be greatly
>> appreciated!
>>
>> My collection of objects is contained in a class (which I frequently use
>> to iterate through objects stored in an array in the class), and I think my
>> hasChildren() and getChildren() methods are working ok, but I am unable to
>> make it recursive.
>>
>> I am particularly confused by where I have to use
>> RecursiveIteratorIterator (do I have to at all?),
>>
>
> something like:
>
> $c = new Categories;
> $c->loadAll();
>
> foreach (new RecursiveIteratorIterator($c) as $item)
> var_dump($item);
make sure to pass the appropriate mode when instantiating
RecursiveIteratorIterator; the default is LEAVES_ONLY, which i presume is
not what people want in most cases. here is the list of modes from the spl
docs,
*mode* Operation mode (one of):
- LEAVES_ONLY only show leaves
- SELF_FIRST show parents prior to their childs
- CHILD_FIRST show all children prior to their parent
so, i typically use SELF_FIRST, and then Jochem's example would become,
..
foreach(new RecursiveIteratorIterator($c,
RecursiveIteratorIterator::SELF_FIRST) as $item)
..
-nathan
No comments:
Post a Comment