1--TEST-- 2SPL: RecursiveTreeIterator and IteratorAggregate 3--INI-- 4error_reporting=E_ALL&~E_NOTICE 5--FILE-- 6<?php 7 8$ary = array( 9 0 => array( 10 "a", 11 1, 12 ), 13 "a" => array( 14 2, 15 "b", 16 3 => array( 17 4, 18 "c", 19 ), 20 "3" => array( 21 4, 22 "c", 23 ), 24 ), 25); 26 27class RecursiveArrayIteratorAggregated implements IteratorAggregate { 28 public $it; 29 function __construct($it) { 30 $this->it = new RecursiveArrayIterator($it); 31 } 32 function getIterator() { 33 return $this->it; 34 } 35} 36 37$it = new RecursiveArrayIteratorAggregated($ary); 38echo "-- flags = BYPASS_KEY --\n"; 39foreach(new RecursiveTreeIterator($it) as $k => $v) { 40 echo "[$k] => $v\n"; 41} 42echo "-- flags = BYPASS_CURRENT --\n"; 43foreach(new RecursiveTreeIterator($it, RecursiveTreeIterator::BYPASS_CURRENT) as $k => $v) { 44 echo "[$k] => $v\n"; 45} 46echo "-- flags = BYPASS_KEY|BYPASS_KEY --\n"; 47foreach(new RecursiveTreeIterator($it, RecursiveTreeIterator::BYPASS_CURRENT|RecursiveTreeIterator::BYPASS_KEY) as $k => $v) { 48 echo "[$k] => $v\n"; 49} 50echo "-- flags = 0 --\n"; 51foreach(new RecursiveTreeIterator($it, 0) as $k => $v) { 52 echo "[$k] => $v\n"; 53} 54echo "-- flags = 0, caching_it_flags = CachingIterator::CATCH_GET_CHILD --\n"; 55foreach(new RecursiveTreeIterator($it, 0, CachingIterator::CATCH_GET_CHILD) as $k => $v) { 56 echo "[$k] => $v\n"; 57} 58 59?> 60===DONE=== 61--EXPECTF-- 62-- flags = BYPASS_KEY -- 63[0] => |-Array 64[0] => | |-a 65[1] => | \-1 66[a] => \-Array 67[0] => |-2 68[1] => |-b 69[3] => \-Array 70[0] => |-4 71[1] => \-c 72-- flags = BYPASS_CURRENT -- 73[|-0] => Array 74[| |-0] => a 75[| \-1] => 1 76[\-a] => Array 77[ |-0] => 2 78[ |-1] => b 79[ \-3] => Array 80[ |-0] => 4 81[ \-1] => c 82-- flags = BYPASS_KEY|BYPASS_KEY -- 83[0] => Array 84[0] => a 85[1] => 1 86[a] => Array 87[0] => 2 88[1] => b 89[3] => Array 90[0] => 4 91[1] => c 92-- flags = 0 -- 93[|-0] => |-Array 94[| |-0] => | |-a 95[| \-1] => | \-1 96[\-a] => \-Array 97[ |-0] => |-2 98[ |-1] => |-b 99[ \-3] => \-Array 100[ |-0] => |-4 101[ \-1] => \-c 102-- flags = 0, caching_it_flags = CachingIterator::CATCH_GET_CHILD -- 103[|-0] => |-Array 104[| |-0] => | |-a 105[| \-1] => | \-1 106[\-a] => \-Array 107[ |-0] => |-2 108[ |-1] => |-b 109[ \-3] => \-Array 110[ |-0] => |-4 111[ \-1] => \-c 112===DONE=== 113