array_015.phpt 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. --TEST--
  2. SPL: ArrayIterator::next() with internal arrays
  3. --FILE--
  4. <?php
  5. $ar = new ArrayObject();
  6. $ar[0] = 1;
  7. $ar[1] = 2;
  8. $ar[2] = 3;
  9. $ar[3] = 4;
  10. $ar[4] = 5;
  11. var_dump($ar);
  12. $it = $ar->getIterator();
  13. $ar->offsetUnset($it->key());
  14. $it->next();
  15. var_dump($it->current());
  16. var_dump($ar);
  17. foreach($it as $k => $v)
  18. {
  19. $ar->offsetUnset($k+1);
  20. echo "$k=>$v\n";
  21. }
  22. var_dump($ar);
  23. foreach($it as $k => $v)
  24. {
  25. $ar->offsetUnset($k);
  26. echo "$k=>$v\n";
  27. }
  28. var_dump($ar);
  29. ?>
  30. ===DONE===
  31. <?php exit(0); ?>
  32. --EXPECTF--
  33. object(ArrayObject)#%d (1) {
  34. %s"storage"%s"ArrayObject":private]=>
  35. array(5) {
  36. [0]=>
  37. int(1)
  38. [1]=>
  39. int(2)
  40. [2]=>
  41. int(3)
  42. [3]=>
  43. int(4)
  44. [4]=>
  45. int(5)
  46. }
  47. }
  48. Notice: ArrayIterator::next(): Array was modified outside object and internal position is no longer valid in %sarray_015.php on line %d
  49. int(2)
  50. object(ArrayObject)#%d (1) {
  51. %s"storage"%s"ArrayObject":private]=>
  52. array(4) {
  53. [1]=>
  54. int(2)
  55. [2]=>
  56. int(3)
  57. [3]=>
  58. int(4)
  59. [4]=>
  60. int(5)
  61. }
  62. }
  63. 1=>2
  64. 3=>4
  65. object(ArrayObject)#%d (1) {
  66. %s"storage"%s"ArrayObject":private]=>
  67. array(2) {
  68. [1]=>
  69. int(2)
  70. [3]=>
  71. int(4)
  72. }
  73. }
  74. 1=>2
  75. Notice: main(): ArrayIterator::next(): Array was modified outside object and internal position is no longer valid in %sarray_015.php on line %d
  76. 3=>4
  77. Notice: main(): ArrayIterator::next(): Array was modified outside object and internal position is no longer valid in %sarray_015.php on line %d
  78. object(ArrayObject)#%d (1) {
  79. %s"storage"%s"ArrayObject":private]=>
  80. array(0) {
  81. }
  82. }
  83. ===DONE===