123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- --TEST--
- array_splice() function precerve foreach by reference iterator pointer
- --FILE--
- <?php
- /* remove before */
- $done = 0;
- $a = [0,1,2,3,4];
- foreach($a as &$v) {
- echo "$v\n";
- if (!$done && $v == 3) {
- $done = 1;
- array_splice($a, 1, 2);
- }
- }
- echo "\n";
- /* remove after */
- $done = 0;
- $a = [0,1,2,3,4];
- foreach($a as &$v) {
- echo "$v\n";
- if (!$done && $v == 0) {
- $done = 1;
- array_splice($a, 2, 2);
- }
- }
- echo "\n";
- /* remove current */
- $done = 0;
- $a = [0,1,2,3,4];
- foreach($a as &$v) {
- echo "$v\n";
- if (!$done && $v == 2) {
- $done = 1;
- array_splice($a, 1, 3);
- }
- }
- echo "\n";
- $replacement = ['x', 'y', 'z'];
- /* replace before */
- $done = 0;
- $a = [0,1,2,3,4];
- foreach($a as &$v) {
- echo "$v\n";
- if (!$done && $v == 3) {
- $done = 1;
- array_splice($a, 1, 2, $replacement);
- }
- }
- echo "\n";
- /* replace after */
- $done = 0;
- $a = [0,1,2,3,4];
- foreach($a as &$v) {
- echo "$v\n";
- if (!$done && $v == 0) {
- $done = 1;
- array_splice($a, 2, 2, $replacement);
- }
- }
- echo "\n";
- /* replace current */
- $done = 0;
- $a = [0,1,2,3,4];
- foreach($a as &$v) {
- echo "$v\n";
- if (!$done && $v == 2) {
- $done = 1;
- array_splice($a, 1, 3, $replacement);
- }
- }
- echo "\n";
- ?>
- --EXPECT--
- 0
- 1
- 2
- 3
- 4
- 0
- 1
- 4
- 0
- 1
- 2
- 4
- 0
- 1
- 2
- 3
- 4
- 0
- 1
- x
- y
- z
- 4
- 0
- 1
- 2
- 4
|