iterator_028.phpt 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. --TEST--
  2. SPL: RecursiveIteratorIterator and setMaxDepth()
  3. --FILE--
  4. <?php
  5. $ar = array(1, 2, array(31, 32, array(331, array(3321, array(33221)))), 4);
  6. $it = new RecursiveIteratorIterator(new RecursiveArrayIterator($ar));
  7. echo "===?===\n";
  8. var_dump($it->getMaxDepth());
  9. foreach($it as $v) echo $it->getDepth() . ": $v\n";
  10. echo "===2===\n";
  11. $it->setMaxDepth(2);
  12. var_dump($it->getMaxDepth());
  13. foreach($it as $v) echo $it->getDepth() . ": $v\n";
  14. echo "===X===\n";
  15. $it->setMaxDepth();
  16. var_dump($it->getMaxDepth());
  17. foreach($it as $v) echo $it->getDepth() . ": $v\n";
  18. echo "===3===\n";
  19. $it->setMaxDepth(3);
  20. var_dump($it->getMaxDepth());
  21. foreach($it as $v) echo $it->getDepth() . ": $v\n";
  22. echo "===5===\n";
  23. $it->setMaxDepth(5);
  24. var_dump($it->getMaxDepth());
  25. foreach($it as $v) echo $it->getDepth() . ": $v\n";
  26. echo "===0===\n";
  27. $it->setMaxDepth(0);
  28. var_dump($it->getMaxDepth());
  29. foreach($it as $v) echo $it->getDepth() . ": $v\n";
  30. echo "===-1===\n";
  31. $it->setMaxDepth(-1);
  32. var_dump($it->getMaxDepth());
  33. $it->setMaxDepth(4);
  34. try {
  35. $it->setMaxDepth(-2);
  36. } catch(\ValueError $e) {
  37. echo $e->getMessage() . \PHP_EOL;
  38. }
  39. var_dump($it->getMaxDepth());
  40. ?>
  41. --EXPECT--
  42. ===?===
  43. bool(false)
  44. 0: 1
  45. 0: 2
  46. 1: 31
  47. 1: 32
  48. 2: 331
  49. 3: 3321
  50. 4: 33221
  51. 0: 4
  52. ===2===
  53. int(2)
  54. 0: 1
  55. 0: 2
  56. 1: 31
  57. 1: 32
  58. 2: 331
  59. 0: 4
  60. ===X===
  61. bool(false)
  62. 0: 1
  63. 0: 2
  64. 1: 31
  65. 1: 32
  66. 2: 331
  67. 3: 3321
  68. 4: 33221
  69. 0: 4
  70. ===3===
  71. int(3)
  72. 0: 1
  73. 0: 2
  74. 1: 31
  75. 1: 32
  76. 2: 331
  77. 3: 3321
  78. 0: 4
  79. ===5===
  80. int(5)
  81. 0: 1
  82. 0: 2
  83. 1: 31
  84. 1: 32
  85. 2: 331
  86. 3: 3321
  87. 4: 33221
  88. 0: 4
  89. ===0===
  90. int(0)
  91. 0: 1
  92. 0: 2
  93. 0: 4
  94. ===-1===
  95. bool(false)
  96. RecursiveIteratorIterator::setMaxDepth(): Argument #1 ($maxDepth) must be greater than or equal to -1
  97. int(4)