iterator_027.phpt 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. --TEST--
  2. SPL: CachingIterator::FULL_CACHE
  3. --FILE--
  4. <?php
  5. $ar = array(1, 2, array(31, 32, array(331)), 4);
  6. $it = new RecursiveArrayIterator($ar);
  7. $it = new RecursiveIteratorIterator($it);
  8. $it = new CachingIterator($it, CachingIterator::FULL_CACHE);
  9. foreach($it as $k=>$v)
  10. {
  11. echo "$k=>$v\n";
  12. }
  13. echo "===CHECK===\n";
  14. for ($i = 0; $i < 4; $i++)
  15. {
  16. if (isset($it[$i]))
  17. {
  18. var_dump($i, $it[$i]);
  19. }
  20. }
  21. $it[2] = 'foo';
  22. $it[3] = 'bar';
  23. $it['baz'] = '25';
  24. var_dump($it[2]);
  25. var_dump($it[3]);
  26. var_dump($it['baz']);
  27. unset($it[0]);
  28. unset($it[2]);
  29. unset($it['baz']);
  30. var_dump(isset($it[0])); // unset
  31. var_dump(isset($it[1])); // still present
  32. var_dump(isset($it[2])); // unset
  33. var_dump(isset($it[3])); // still present
  34. var_dump(isset($it['baz']));
  35. echo "===REWIND===\n";
  36. $it->rewind(); // cleans and reads first element
  37. var_dump(isset($it[0])); // pre-fetched
  38. var_dump(isset($it[1])); // deleted
  39. var_dump(isset($it[2])); // unset
  40. var_dump(isset($it[3])); // deleted
  41. ?>
  42. --EXPECT--
  43. 0=>1
  44. 1=>2
  45. 0=>31
  46. 1=>32
  47. 0=>331
  48. 3=>4
  49. ===CHECK===
  50. int(0)
  51. int(331)
  52. int(1)
  53. int(32)
  54. int(3)
  55. int(4)
  56. string(3) "foo"
  57. string(3) "bar"
  58. string(2) "25"
  59. bool(false)
  60. bool(true)
  61. bool(false)
  62. bool(true)
  63. bool(false)
  64. ===REWIND===
  65. bool(true)
  66. bool(false)
  67. bool(false)
  68. bool(false)