Skip to content

Commit 42feedd

Browse files
committed
MFH:
- Removed the undocumented object support in the leftover array functions [DOC] (natcasesort, natsort, array_walk, array_walk_recursive, array_unique, array_key_exists) - Changed HASH_OF() to Z_ARRVAL_P() - Fixed bug #45937 (array_walk and array_walk_recursive can alter private/protected object variable)
1 parent 02b2bcd commit 42feedd

13 files changed

+414
-469
lines changed

ext/standard/array.c

Lines changed: 56 additions & 134 deletions
Large diffs are not rendered by default.

ext/standard/tests/array/array_key_exists.phpt

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -255,23 +255,23 @@ NULL
255255
Warning: array_key_exists(): The first argument should be either a string or an integer in %s on line %d
256256
bool(false)
257257

258-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
259-
bool(false)
258+
Warning: array_key_exists() expects parameter 2 to be array, string given in %s on line %d
259+
NULL
260260

261-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
262-
bool(false)
261+
Warning: array_key_exists() expects parameter 2 to be array, integer given in %s on line %d
262+
NULL
263263

264-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
265-
bool(false)
264+
Warning: array_key_exists() expects parameter 2 to be array, null given in %s on line %d
265+
NULL
266266

267-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
268-
bool(false)
267+
Warning: array_key_exists() expects parameter 2 to be array, boolean given in %s on line %d
268+
NULL
269269

270-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
271-
bool(false)
270+
Warning: array_key_exists() expects parameter 2 to be array, boolean given in %s on line %d
271+
NULL
272272

273-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
274-
bool(false)
273+
Warning: array_key_exists() expects parameter 2 to be array, double given in %s on line %d
274+
NULL
275275

276276
Warning: array_key_exists() expects exactly 2 parameters, 3 given in %s on line %d
277277
NULL
@@ -280,13 +280,23 @@ Warning: array_key_exists(): The first argument should be either a string or an
280280
bool(false)
281281

282282
*** Testing operation on objects ***
283-
bool(false)
284-
bool(false)
285-
bool(true)
286-
bool(false)
287-
bool(true)
283+
284+
Warning: array_key_exists() expects parameter 2 to be array, object given in %s on line %d
285+
NULL
286+
287+
Warning: array_key_exists() expects parameter 2 to be array, object given in %s on line %d
288+
NULL
289+
290+
Warning: array_key_exists() expects parameter 2 to be array, object given in %s on line %d
291+
NULL
292+
293+
Warning: array_key_exists() expects parameter 2 to be array, object given in %s on line %d
294+
NULL
295+
296+
Warning: array_key_exists() expects parameter 2 to be array, object given in %s on line %d
297+
NULL
288298
bool(true)
289299

290-
Warning: array_key_exists(): The first argument should be either a string or an integer in %s on line %d
291-
bool(false)
300+
Warning: array_key_exists() expects parameter 2 to be array, object given in %s on line %d
301+
NULL
292302
Done

ext/standard/tests/array/array_key_exists_object1.phpt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,13 @@ echo "Done";
5252

5353
-- Do not assign a value to $class1->var3 --
5454
$key = var1:
55-
bool(true)
55+
56+
Warning: array_key_exists() expects parameter 2 to be array, object given in %s on line %d
57+
NULL
5658
$key = var3:
57-
bool(true)
59+
60+
Warning: array_key_exists() expects parameter 2 to be array, object given in %s on line %d
61+
NULL
5862
$class1:
5963
object(myClass)#%d (3) {
6064
["var1"]=>
@@ -67,7 +71,9 @@ object(myClass)#%d (3) {
6771

6872
-- Assign a value to $class2->var3 --
6973
$key = var3:
70-
bool(true)
74+
75+
Warning: array_key_exists() expects parameter 2 to be array, object given in %s on line %d
76+
NULL
7177
$class2:
7278
object(myClass)#%d (3) {
7379
["var1"]=>
@@ -77,4 +83,4 @@ object(myClass)#%d (3) {
7783
["var3"]=>
7884
string(1) "z"
7985
}
80-
Done
86+
Done

ext/standard/tests/array/array_key_exists_object2.phpt

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,17 @@ echo "Done";
5454

5555
-- Do not assign a value to $class1->var3 --
5656
$key = var1:
57-
bool(true)
57+
58+
Warning: array_key_exists() expects parameter 2 to be array, object given in %s on line %d
59+
NULL
5860
$key = var2:
59-
bool(false)
61+
62+
Warning: array_key_exists() expects parameter 2 to be array, object given in %s on line %d
63+
NULL
6064
$key = var3:
61-
bool(false)
65+
66+
Warning: array_key_exists() expects parameter 2 to be array, object given in %s on line %d
67+
NULL
6268
$class1:
6369
object(myClass)#%d (3) {
6470
["var1"]=>
@@ -71,7 +77,9 @@ object(myClass)#%d (3) {
7177

7278
-- Assign a value to $class2->var3 --
7379
$key = var3:
74-
bool(false)
80+
81+
Warning: array_key_exists() expects parameter 2 to be array, object given in %s on line %d
82+
NULL
7583
$class2:
7684
object(myClass)#%d (3) {
7785
["var1"]=>
@@ -81,4 +89,4 @@ object(myClass)#%d (3) {
8189
["var3":"myClass":private]=>
8290
string(1) "z"
8391
}
84-
Done
92+
Done

ext/standard/tests/array/array_key_exists_variation2.phpt

Lines changed: 50 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -104,122 +104,124 @@ echo "Done";
104104

105105
-- Iteration 1 --
106106

107-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
108-
bool(false)
107+
Warning: array_key_exists() expects parameter 2 to be array, integer given in %s on line %d
108+
NULL
109109

110110
-- Iteration 2 --
111111

112-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
113-
bool(false)
112+
Warning: array_key_exists() expects parameter 2 to be array, integer given in %s on line %d
113+
NULL
114114

115115
-- Iteration 3 --
116116

117-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
118-
bool(false)
117+
Warning: array_key_exists() expects parameter 2 to be array, integer given in %s on line %d
118+
NULL
119119

120120
-- Iteration 4 --
121121

122-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
123-
bool(false)
122+
Warning: array_key_exists() expects parameter 2 to be array, integer given in %s on line %d
123+
NULL
124124

125125
-- Iteration 5 --
126126

127-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
128-
bool(false)
127+
Warning: array_key_exists() expects parameter 2 to be array, double given in %s on line %d
128+
NULL
129129

130130
-- Iteration 6 --
131131

132-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
133-
bool(false)
132+
Warning: array_key_exists() expects parameter 2 to be array, double given in %s on line %d
133+
NULL
134134

135135
-- Iteration 7 --
136136

137-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
138-
bool(false)
137+
Warning: array_key_exists() expects parameter 2 to be array, double given in %s on line %d
138+
NULL
139139

140140
-- Iteration 8 --
141141

142-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
143-
bool(false)
142+
Warning: array_key_exists() expects parameter 2 to be array, double given in %s on line %d
143+
NULL
144144

145145
-- Iteration 9 --
146146

147-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
148-
bool(false)
147+
Warning: array_key_exists() expects parameter 2 to be array, double given in %s on line %d
148+
NULL
149149

150150
-- Iteration 10 --
151151

152-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
153-
bool(false)
152+
Warning: array_key_exists() expects parameter 2 to be array, null given in %s on line %d
153+
NULL
154154

155155
-- Iteration 11 --
156156

157-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
158-
bool(false)
157+
Warning: array_key_exists() expects parameter 2 to be array, null given in %s on line %d
158+
NULL
159159

160160
-- Iteration 12 --
161161

162-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
163-
bool(false)
162+
Warning: array_key_exists() expects parameter 2 to be array, boolean given in %s on line %d
163+
NULL
164164

165165
-- Iteration 13 --
166166

167-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
168-
bool(false)
167+
Warning: array_key_exists() expects parameter 2 to be array, boolean given in %s on line %d
168+
NULL
169169

170170
-- Iteration 14 --
171171

172-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
173-
bool(false)
172+
Warning: array_key_exists() expects parameter 2 to be array, boolean given in %s on line %d
173+
NULL
174174

175175
-- Iteration 15 --
176176

177-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
178-
bool(false)
177+
Warning: array_key_exists() expects parameter 2 to be array, boolean given in %s on line %d
178+
NULL
179179

180180
-- Iteration 16 --
181181

182-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
183-
bool(false)
182+
Warning: array_key_exists() expects parameter 2 to be array, string given in %s on line %d
183+
NULL
184184

185185
-- Iteration 17 --
186186

187-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
188-
bool(false)
187+
Warning: array_key_exists() expects parameter 2 to be array, string given in %s on line %d
188+
NULL
189189

190190
-- Iteration 18 --
191191
bool(false)
192192

193193
-- Iteration 19 --
194194

195-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
196-
bool(false)
195+
Warning: array_key_exists() expects parameter 2 to be array, string given in %s on line %d
196+
NULL
197197

198198
-- Iteration 20 --
199199

200-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
201-
bool(false)
200+
Warning: array_key_exists() expects parameter 2 to be array, string given in %s on line %d
201+
NULL
202202

203203
-- Iteration 21 --
204204

205-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
206-
bool(false)
205+
Warning: array_key_exists() expects parameter 2 to be array, string given in %s on line %d
206+
NULL
207207

208208
-- Iteration 22 --
209-
bool(false)
209+
210+
Warning: array_key_exists() expects parameter 2 to be array, object given in %s on line %d
211+
NULL
210212

211213
-- Iteration 23 --
212214

213-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
214-
bool(false)
215+
Warning: array_key_exists() expects parameter 2 to be array, null given in %s on line %d
216+
NULL
215217

216218
-- Iteration 24 --
217219

218-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
219-
bool(false)
220+
Warning: array_key_exists() expects parameter 2 to be array, null given in %s on line %d
221+
NULL
220222

221223
-- Iteration 25 --
222224

223-
Warning: array_key_exists(): The second argument should be either an array or an object in %s on line %d
224-
bool(false)
225-
Done
225+
Warning: array_key_exists() expects parameter 2 to be array, resource given in %s on line %d
226+
NULL
227+
Done

ext/standard/tests/array/array_merge.phpt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -750,8 +750,6 @@ Warning: array_merge() expects at least 1 parameter, 0 given in %s on line %d
750750
NULL
751751

752752
Warning: array_merge(): Argument #1 is not an array in %s on line %d
753-
754-
Warning: array_merge(): Argument #2 is not an array in %s on line %d
755753
NULL
756754

757755
Warning: array_merge(): Argument #3 is not an array in %s on line %d

0 commit comments

Comments
 (0)