foreach_017.phpt 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. --TEST--
  2. array_splice() function precerve foreach by reference iterator pointer
  3. --FILE--
  4. <?php
  5. /* remove before */
  6. $done = 0;
  7. $a = [0,1,2,3,4];
  8. foreach($a as &$v) {
  9. echo "$v\n";
  10. if (!$done && $v == 3) {
  11. $done = 1;
  12. array_splice($a, 1, 2);
  13. }
  14. }
  15. echo "\n";
  16. /* remove after */
  17. $done = 0;
  18. $a = [0,1,2,3,4];
  19. foreach($a as &$v) {
  20. echo "$v\n";
  21. if (!$done && $v == 0) {
  22. $done = 1;
  23. array_splice($a, 2, 2);
  24. }
  25. }
  26. echo "\n";
  27. /* remove current */
  28. $done = 0;
  29. $a = [0,1,2,3,4];
  30. foreach($a as &$v) {
  31. echo "$v\n";
  32. if (!$done && $v == 2) {
  33. $done = 1;
  34. array_splice($a, 1, 3);
  35. }
  36. }
  37. echo "\n";
  38. $replacement = ['x', 'y', 'z'];
  39. /* replace before */
  40. $done = 0;
  41. $a = [0,1,2,3,4];
  42. foreach($a as &$v) {
  43. echo "$v\n";
  44. if (!$done && $v == 3) {
  45. $done = 1;
  46. array_splice($a, 1, 2, $replacement);
  47. }
  48. }
  49. echo "\n";
  50. /* replace after */
  51. $done = 0;
  52. $a = [0,1,2,3,4];
  53. foreach($a as &$v) {
  54. echo "$v\n";
  55. if (!$done && $v == 0) {
  56. $done = 1;
  57. array_splice($a, 2, 2, $replacement);
  58. }
  59. }
  60. echo "\n";
  61. /* replace current */
  62. $done = 0;
  63. $a = [0,1,2,3,4];
  64. foreach($a as &$v) {
  65. echo "$v\n";
  66. if (!$done && $v == 2) {
  67. $done = 1;
  68. array_splice($a, 1, 3, $replacement);
  69. }
  70. }
  71. echo "\n";
  72. ?>
  73. --EXPECT--
  74. 0
  75. 1
  76. 2
  77. 3
  78. 4
  79. 0
  80. 1
  81. 4
  82. 0
  83. 1
  84. 2
  85. 4
  86. 0
  87. 1
  88. 2
  89. 3
  90. 4
  91. 0
  92. 1
  93. x
  94. y
  95. z
  96. 4
  97. 0
  98. 1
  99. 2
  100. 4