iterator_015.phpt 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. --TEST--
  2. SPL: RecursiveIteratorIterator and beginChildren/endChildren
  3. --FILE--
  4. <?php
  5. class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator
  6. {
  7. function rewind(): void
  8. {
  9. echo "<ul>\n";
  10. parent::rewind();
  11. }
  12. function beginChildren(): void
  13. {
  14. echo str_repeat(' ',$this->getDepth())."<ul>\n";
  15. }
  16. function endChildren(): void
  17. {
  18. echo str_repeat(' ',$this->getDepth())."</ul>\n";
  19. }
  20. function valid(): bool
  21. {
  22. if (!parent::valid()) {
  23. echo "<ul>\n";
  24. return false;
  25. }
  26. return true;
  27. }
  28. }
  29. $arr = array("a", array("ba", array("bba", "bbb"), array(array("bcaa"))), array("ca"), "d");
  30. $obj = new RecursiveArrayIterator($arr);
  31. $rit = new RecursiveArrayIteratorIterator($obj);
  32. foreach($rit as $k=>$v)
  33. {
  34. echo str_repeat(' ',$rit->getDepth()+1)."$k=>$v\n";
  35. }
  36. ?>
  37. --EXPECT--
  38. <ul>
  39. 0=>a
  40. <ul>
  41. 0=>ba
  42. <ul>
  43. 0=>bba
  44. 1=>bbb
  45. </ul>
  46. <ul>
  47. <ul>
  48. 0=>bcaa
  49. </ul>
  50. </ul>
  51. </ul>
  52. <ul>
  53. 0=>ca
  54. </ul>
  55. 3=>d
  56. <ul>