array_013.phpt 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. --TEST--
  2. SPL: ArrayIterator::append
  3. --FILE--
  4. <?php
  5. if (!class_exists('NoRewindIterator', false))
  6. {
  7. require_once(__DIR__ . '/../examples/norewinditerator.inc');
  8. }
  9. echo "===Array===\n";
  10. $a = array(0 => 'zero', 1 => 'one', 2 => 'two');
  11. $it = new ArrayIterator($a);
  12. foreach($it as $key => $val)
  13. {
  14. echo "$key=>$val\n";
  15. }
  16. echo "===Append===\n";
  17. $it->append('three');
  18. $it->append('four');
  19. foreach(new NoRewindIterator($it) as $key => $val)
  20. {
  21. echo "$key=>$val\n";
  22. }
  23. echo "===Object===\n";
  24. class test
  25. {
  26. public $zero = 0;
  27. protected $pro;
  28. public $one = 1;
  29. private $pri;
  30. public $two = 2;
  31. }
  32. $o = new test;
  33. $it = new ArrayIterator($o);
  34. foreach($it as $key => $val)
  35. {
  36. echo "$key=>$val\n";
  37. }
  38. echo "===Append===\n";
  39. $it->append('three');
  40. $it->append('four');
  41. foreach(new NoRewindIterator($it) as $key => $val)
  42. {
  43. echo "$key=>$val\n";
  44. }
  45. var_dump($o->{0}); /* doesn't wotk anyway */
  46. ?>
  47. ===DONE===
  48. --EXPECTF--
  49. ===Array===
  50. 0=>zero
  51. 1=>one
  52. 2=>two
  53. ===Append===
  54. 3=>three
  55. 4=>four
  56. ===Object===
  57. zero=>0
  58. one=>1
  59. two=>2
  60. ===Append===
  61. Fatal error: Uncaught Error: Cannot append properties to objects, use ArrayIterator::offsetSet() instead in %s:%d
  62. Stack trace:
  63. #0 %s(%d): ArrayIterator->append('three')
  64. #1 {main}
  65. thrown in %s on line %d