~ubuntu-branches/ubuntu/quantal/php5/quantal

« back to all changes in this revision

Viewing changes to tests/lang/foreachLoop.002.phpt

  • Committer: Bazaar Package Importer
  • Author(s): Sean Finney
  • Date: 2009-07-01 09:12:10 UTC
  • mto: (0.9.1) (1.1.17 upstream)
  • mto: This revision was merged to the branch mainline in revision 58.
  • Revision ID: james.westby@ubuntu.com-20090701091210-go0h6506p62on17r
Tags: upstream-5.3.0
ImportĀ upstreamĀ versionĀ 5.3.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
--TEST--
 
2
Foreach loop tests - modifying the array during the loop.
 
3
--FILE--
 
4
<?php
 
5
 
 
6
echo "\nDirectly changing array values.\n";
 
7
$a = array("original.1","original.2","original.3");
 
8
foreach ($a as $k=>$v) {
 
9
        $a[$k]="changed.$k";
 
10
        var_dump($v);
 
11
}
 
12
var_dump($a);
 
13
 
 
14
echo "\nModifying the foreach \$value.\n";
 
15
$a = array("original.1","original.2","original.3");
 
16
foreach ($a as $k=>$v) {
 
17
        $v="changed.$k";
 
18
}
 
19
var_dump($a);
 
20
 
 
21
 
 
22
echo "\nModifying the foreach &\$value.\n";
 
23
$a = array("original.1","original.2","original.3");
 
24
foreach ($a as $k=>&$v) {
 
25
        $v="changed.$k";
 
26
}
 
27
var_dump($a);
 
28
 
 
29
echo "\nPushing elements onto an unreferenced array.\n";
 
30
$a = array("original.1","original.2","original.3");
 
31
$counter=0;
 
32
foreach ($a as $v) {
 
33
        array_push($a, "new.$counter");
 
34
 
 
35
        //avoid infinite loop if test is failing
 
36
    if ($counter++>10) {
 
37
        echo "Loop detected\n";
 
38
        break;          
 
39
    }
 
40
}
 
41
var_dump($a);
 
42
 
 
43
echo "\nPushing elements onto an unreferenced array, using &\$value.\n";
 
44
$a = array("original.1","original.2","original.3");
 
45
$counter=0;
 
46
foreach ($a as &$v) {
 
47
        array_push($a, "new.$counter");
 
48
 
 
49
        //avoid infinite loop if test is failing
 
50
    if ($counter++>10) {
 
51
        echo "Loop detected\n";
 
52
        break;          
 
53
    }   
 
54
}
 
55
var_dump($a);
 
56
 
 
57
echo "\nPopping elements off an unreferenced array.\n";
 
58
$a = array("original.1","original.2","original.3");
 
59
foreach ($a as $v) {
 
60
        array_pop($a);
 
61
        var_dump($v);   
 
62
}
 
63
var_dump($a);
 
64
 
 
65
echo "\nPopping elements off an unreferenced array, using &\$value.\n";
 
66
$a = array("original.1","original.2","original.3");
 
67
foreach ($a as &$v) {
 
68
        array_pop($a);
 
69
        var_dump($v);
 
70
}
 
71
var_dump($a);
 
72
 
 
73
?>
 
74
--EXPECT--
 
75
 
 
76
Directly changing array values.
 
77
string(10) "original.1"
 
78
string(10) "original.2"
 
79
string(10) "original.3"
 
80
array(3) {
 
81
  [0]=>
 
82
  string(9) "changed.0"
 
83
  [1]=>
 
84
  string(9) "changed.1"
 
85
  [2]=>
 
86
  string(9) "changed.2"
 
87
}
 
88
 
 
89
Modifying the foreach $value.
 
90
array(3) {
 
91
  [0]=>
 
92
  string(10) "original.1"
 
93
  [1]=>
 
94
  string(10) "original.2"
 
95
  [2]=>
 
96
  string(10) "original.3"
 
97
}
 
98
 
 
99
Modifying the foreach &$value.
 
100
array(3) {
 
101
  [0]=>
 
102
  string(9) "changed.0"
 
103
  [1]=>
 
104
  string(9) "changed.1"
 
105
  [2]=>
 
106
  &string(9) "changed.2"
 
107
}
 
108
 
 
109
Pushing elements onto an unreferenced array.
 
110
array(6) {
 
111
  [0]=>
 
112
  string(10) "original.1"
 
113
  [1]=>
 
114
  string(10) "original.2"
 
115
  [2]=>
 
116
  string(10) "original.3"
 
117
  [3]=>
 
118
  string(5) "new.0"
 
119
  [4]=>
 
120
  string(5) "new.1"
 
121
  [5]=>
 
122
  string(5) "new.2"
 
123
}
 
124
 
 
125
Pushing elements onto an unreferenced array, using &$value.
 
126
Loop detected
 
127
array(15) {
 
128
  [0]=>
 
129
  string(10) "original.1"
 
130
  [1]=>
 
131
  string(10) "original.2"
 
132
  [2]=>
 
133
  string(10) "original.3"
 
134
  [3]=>
 
135
  string(5) "new.0"
 
136
  [4]=>
 
137
  string(5) "new.1"
 
138
  [5]=>
 
139
  string(5) "new.2"
 
140
  [6]=>
 
141
  string(5) "new.3"
 
142
  [7]=>
 
143
  string(5) "new.4"
 
144
  [8]=>
 
145
  string(5) "new.5"
 
146
  [9]=>
 
147
  string(5) "new.6"
 
148
  [10]=>
 
149
  string(5) "new.7"
 
150
  [11]=>
 
151
  &string(5) "new.8"
 
152
  [12]=>
 
153
  string(5) "new.9"
 
154
  [13]=>
 
155
  string(6) "new.10"
 
156
  [14]=>
 
157
  string(6) "new.11"
 
158
}
 
159
 
 
160
Popping elements off an unreferenced array.
 
161
string(10) "original.1"
 
162
string(10) "original.2"
 
163
string(10) "original.3"
 
164
array(0) {
 
165
}
 
166
 
 
167
Popping elements off an unreferenced array, using &$value.
 
168
string(10) "original.1"
 
169
string(10) "original.2"
 
170
array(1) {
 
171
  [0]=>
 
172
  string(10) "original.1"
 
173
}
 
 
b'\\ No newline at end of file'