@@ -31,104 +31,104 @@ $anotherList = [8, 9];
31
31
echo "*** array_merge *** \n" ;
32
32
33
33
// const empty 2nd array
34
- $ ptrBefore = zend_get_zval_ptr ($ listInt );
34
+ $ ptrBefore = zend_get_array_ptr ($ listInt );
35
35
$ listInt = array_merge ($ listInt , []);
36
- $ ptrAfter = zend_get_zval_ptr ($ listInt );
36
+ $ ptrAfter = zend_get_array_ptr ($ listInt );
37
37
var_dump ($ ptrAfter === $ ptrBefore );
38
38
39
- $ ptrBefore = zend_get_zval_ptr ($ listStr );
39
+ $ ptrBefore = zend_get_array_ptr ($ listStr );
40
40
$ listStr = array_merge ($ listStr , []);
41
- $ ptrAfter = zend_get_zval_ptr ($ listStr );
41
+ $ ptrAfter = zend_get_array_ptr ($ listStr );
42
42
var_dump ($ ptrAfter === $ ptrBefore );
43
43
44
- $ ptrBefore = zend_get_zval_ptr ($ mapInt );
44
+ $ ptrBefore = zend_get_array_ptr ($ mapInt );
45
45
$ mapInt = array_merge ($ mapInt , []);
46
- $ ptrAfter = zend_get_zval_ptr ($ mapInt );
46
+ $ ptrAfter = zend_get_array_ptr ($ mapInt );
47
47
var_dump ($ ptrAfter === $ ptrBefore );
48
48
49
- $ ptrBefore = zend_get_zval_ptr ($ mapObj );
49
+ $ ptrBefore = zend_get_array_ptr ($ mapObj );
50
50
$ mapObj = array_merge ($ mapObj , []);
51
- $ ptrAfter = zend_get_zval_ptr ($ mapObj );
51
+ $ ptrAfter = zend_get_array_ptr ($ mapObj );
52
52
var_dump ($ ptrAfter === $ ptrBefore );
53
53
54
54
// const non-empty 2nd array
55
- $ ptrBefore = zend_get_zval_ptr ($ listInt );
55
+ $ ptrBefore = zend_get_array_ptr ($ listInt );
56
56
$ listInt = array_merge ($ listInt , [4 ]);
57
- $ ptrAfter = zend_get_zval_ptr ($ listInt );
57
+ $ ptrAfter = zend_get_array_ptr ($ listInt );
58
58
var_dump ($ ptrAfter === $ ptrBefore );
59
59
60
- $ ptrBefore = zend_get_zval_ptr ($ listStr );
60
+ $ ptrBefore = zend_get_array_ptr ($ listStr );
61
61
$ listStr = array_merge ($ listStr , [4 ]);
62
- $ ptrAfter = zend_get_zval_ptr ($ listStr );
62
+ $ ptrAfter = zend_get_array_ptr ($ listStr );
63
63
var_dump ($ ptrAfter === $ ptrBefore );
64
64
65
- $ ptrBefore = zend_get_zval_ptr ($ mapInt );
65
+ $ ptrBefore = zend_get_array_ptr ($ mapInt );
66
66
$ mapInt = array_merge ($ mapInt , [4 ]);
67
- $ ptrAfter = zend_get_zval_ptr ($ mapInt );
67
+ $ ptrAfter = zend_get_array_ptr ($ mapInt );
68
68
var_dump ($ ptrAfter === $ ptrBefore );
69
69
70
- $ ptrBefore = zend_get_zval_ptr ($ mapObj );
70
+ $ ptrBefore = zend_get_array_ptr ($ mapObj );
71
71
$ mapObj = array_merge ($ mapObj , [4 ]);
72
- $ ptrAfter = zend_get_zval_ptr ($ mapObj );
72
+ $ ptrAfter = zend_get_array_ptr ($ mapObj );
73
73
var_dump ($ ptrAfter === $ ptrBefore );
74
74
75
75
// non-const non-empty 2nd array
76
- $ ptrBefore = zend_get_zval_ptr ($ listInt );
76
+ $ ptrBefore = zend_get_array_ptr ($ listInt );
77
77
$ listInt = array_merge ($ listInt , $ anotherList );
78
- $ ptrAfter = zend_get_zval_ptr ($ listInt );
78
+ $ ptrAfter = zend_get_array_ptr ($ listInt );
79
79
var_dump ($ ptrAfter === $ ptrBefore );
80
80
81
- $ ptrBefore = zend_get_zval_ptr ($ listStr );
81
+ $ ptrBefore = zend_get_array_ptr ($ listStr );
82
82
$ listStr = array_merge ($ listStr , $ anotherList );
83
- $ ptrAfter = zend_get_zval_ptr ($ listStr );
83
+ $ ptrAfter = zend_get_array_ptr ($ listStr );
84
84
var_dump ($ ptrAfter === $ ptrBefore );
85
85
86
- $ ptrBefore = zend_get_zval_ptr ($ mapInt );
86
+ $ ptrBefore = zend_get_array_ptr ($ mapInt );
87
87
$ mapInt = array_merge ($ mapInt , $ anotherList );
88
- $ ptrAfter = zend_get_zval_ptr ($ mapInt );
88
+ $ ptrAfter = zend_get_array_ptr ($ mapInt );
89
89
var_dump ($ ptrAfter === $ ptrBefore );
90
90
91
- $ ptrBefore = zend_get_zval_ptr ($ mapObj );
91
+ $ ptrBefore = zend_get_array_ptr ($ mapObj );
92
92
$ mapObj = array_merge ($ mapObj , $ anotherList );
93
- $ ptrAfter = zend_get_zval_ptr ($ mapObj );
93
+ $ ptrAfter = zend_get_array_ptr ($ mapObj );
94
94
var_dump ($ ptrAfter === $ ptrBefore );
95
95
96
96
// non-1st argument as a result
97
- $ ptrBefore = zend_get_zval_ptr ($ listInt );
97
+ $ ptrBefore = zend_get_array_ptr ($ listInt );
98
98
$ listInt = array_merge ($ anotherList , $ listInt );
99
- $ ptrAfter = zend_get_zval_ptr ($ listInt );
99
+ $ ptrAfter = zend_get_array_ptr ($ listInt );
100
100
var_dump ($ ptrAfter === $ ptrBefore );
101
101
102
- $ ptrBefore = zend_get_zval_ptr ($ listStr );
102
+ $ ptrBefore = zend_get_array_ptr ($ listStr );
103
103
$ listStr = array_merge ($ anotherList , $ listStr );
104
- $ ptrAfter = zend_get_zval_ptr ($ listStr );
104
+ $ ptrAfter = zend_get_array_ptr ($ listStr );
105
105
var_dump ($ ptrAfter === $ ptrBefore );
106
106
107
- $ ptrBefore = zend_get_zval_ptr ($ mapInt );
107
+ $ ptrBefore = zend_get_array_ptr ($ mapInt );
108
108
$ mapInt = array_merge ($ anotherList , $ mapInt );
109
- $ ptrAfter = zend_get_zval_ptr ($ mapInt );
109
+ $ ptrAfter = zend_get_array_ptr ($ mapInt );
110
110
var_dump ($ ptrAfter === $ ptrBefore );
111
111
112
- $ ptrBefore = zend_get_zval_ptr ($ mapObj );
112
+ $ ptrBefore = zend_get_array_ptr ($ mapObj );
113
113
$ mapObj = array_merge ($ anotherList , $ mapObj );
114
- $ ptrAfter = zend_get_zval_ptr ($ mapObj );
114
+ $ ptrAfter = zend_get_array_ptr ($ mapObj );
115
115
var_dump ($ ptrAfter === $ ptrBefore );
116
116
117
117
echo "--- \n" ;
118
118
foreach ($ listInt as $ v ) {
119
- $ ptrBefore = zend_get_zval_ptr ($ listInt );
119
+ $ ptrBefore = zend_get_array_ptr ($ listInt );
120
120
$ listInt = array_merge ($ listInt , [$ v ]); // 2nd and 3rd iteration must not copy the array
121
- $ ptrAfter = zend_get_zval_ptr ($ listInt );
121
+ $ ptrAfter = zend_get_array_ptr ($ listInt );
122
122
var_dump ($ ptrAfter === $ ptrBefore );
123
123
124
124
if ($ v === 1 ) { // 3rd iteration
125
125
break ;
126
126
}
127
127
}
128
128
foreach (array_keys ($ listInt ) as $ k ) {
129
- $ ptrBefore = zend_get_zval_ptr ($ listInt );
129
+ $ ptrBefore = zend_get_array_ptr ($ listInt );
130
130
$ listInt = array_merge ($ listInt , [$ listInt [$ k ]]); // array must never be copied
131
- $ ptrAfter = zend_get_zval_ptr ($ listInt );
131
+ $ ptrAfter = zend_get_array_ptr ($ listInt );
132
132
var_dump ($ ptrAfter === $ ptrBefore );
133
133
134
134
if ($ listInt [$ k ] === 1 ) { // 3rd iteration
@@ -161,73 +161,73 @@ $oneListInt = array_slice($listInt, 0, 1, true);
161
161
$ oneMapObj = array_slice ($ mapObj , 0 , 1 , true );
162
162
163
163
$ listInt [] = -1 ;
164
- $ ptrBefore = zend_get_zval_ptr ($ listInt );
164
+ $ ptrBefore = zend_get_array_ptr ($ listInt );
165
165
$ listInt = array_intersect ($ listInt , $ oneListInt );
166
- $ ptrAfter = zend_get_zval_ptr ($ listInt );
166
+ $ ptrAfter = zend_get_array_ptr ($ listInt );
167
167
var_dump ($ ptrAfter === $ ptrBefore );
168
168
169
169
$ mapObj [] = -1 ;
170
- $ ptrBefore = zend_get_zval_ptr ($ mapObj );
170
+ $ ptrBefore = zend_get_array_ptr ($ mapObj );
171
171
$ mapObj = array_intersect ($ mapObj , $ oneMapObj );
172
- $ ptrAfter = zend_get_zval_ptr ($ mapObj );
172
+ $ ptrAfter = zend_get_array_ptr ($ mapObj );
173
173
var_dump ($ ptrAfter === $ ptrBefore );
174
174
175
175
$ listInt [] = -1 ;
176
- $ ptrBefore = zend_get_zval_ptr ($ listInt );
176
+ $ ptrBefore = zend_get_array_ptr ($ listInt );
177
177
$ listInt = array_intersect_assoc ($ listInt , $ oneListInt );
178
- $ ptrAfter = zend_get_zval_ptr ($ listInt );
178
+ $ ptrAfter = zend_get_array_ptr ($ listInt );
179
179
var_dump ($ ptrAfter === $ ptrBefore );
180
180
181
181
$ mapObj [] = -1 ;
182
- $ ptrBefore = zend_get_zval_ptr ($ mapObj );
182
+ $ ptrBefore = zend_get_array_ptr ($ mapObj );
183
183
$ mapObj = array_intersect_assoc ($ mapObj , $ oneMapObj );
184
- $ ptrAfter = zend_get_zval_ptr ($ mapObj );
184
+ $ ptrAfter = zend_get_array_ptr ($ mapObj );
185
185
var_dump ($ ptrAfter === $ ptrBefore );
186
186
187
187
$ listInt [] = -1 ;
188
- $ ptrBefore = zend_get_zval_ptr ($ listInt );
188
+ $ ptrBefore = zend_get_array_ptr ($ listInt );
189
189
$ listInt = array_intersect_key ($ listInt , $ oneListInt );
190
- $ ptrAfter = zend_get_zval_ptr ($ listInt );
190
+ $ ptrAfter = zend_get_array_ptr ($ listInt );
191
191
var_dump ($ ptrAfter === $ ptrBefore );
192
192
193
193
$ listInt [] = -1 ;
194
- $ ptrBefore = zend_get_zval_ptr ($ listInt );
194
+ $ ptrBefore = zend_get_array_ptr ($ listInt );
195
195
$ listInt = array_intersect_ukey ($ listInt , $ oneListInt , fn ($ k1 , $ k2 ) => $ k1 <=> $ k2 );
196
- $ ptrAfter = zend_get_zval_ptr ($ listInt );
196
+ $ ptrAfter = zend_get_array_ptr ($ listInt );
197
197
var_dump ($ ptrAfter === $ ptrBefore );
198
198
199
199
$ mapObj [] = -1 ;
200
- $ ptrBefore = zend_get_zval_ptr ($ mapObj );
200
+ $ ptrBefore = zend_get_array_ptr ($ mapObj );
201
201
$ mapObj = array_intersect_ukey ($ mapObj , $ oneListInt , fn ($ k1 , $ k2 ) => $ k1 <=> $ k2 );
202
- $ ptrAfter = zend_get_zval_ptr ($ mapObj );
202
+ $ ptrAfter = zend_get_array_ptr ($ mapObj );
203
203
var_dump ($ ptrAfter === $ ptrBefore );
204
204
205
205
echo "*** array_unique *** \n" ;
206
206
207
207
$ listInt [] = end ($ listInt );
208
- $ ptrBefore = zend_get_zval_ptr ($ listInt );
208
+ $ ptrBefore = zend_get_array_ptr ($ listInt );
209
209
$ listInt = array_unique ($ listInt );
210
- $ ptrAfter = zend_get_zval_ptr ($ listInt );
210
+ $ ptrAfter = zend_get_array_ptr ($ listInt );
211
211
var_dump ($ ptrAfter === $ ptrBefore );
212
212
213
213
$ mapObj [] = end ($ mapObj );
214
- $ ptrBefore = zend_get_zval_ptr ($ mapObj );
214
+ $ ptrBefore = zend_get_array_ptr ($ mapObj );
215
215
$ mapObj = array_unique ($ mapObj , SORT_REGULAR );
216
- $ ptrAfter = zend_get_zval_ptr ($ mapObj );
216
+ $ ptrAfter = zend_get_array_ptr ($ mapObj );
217
217
var_dump ($ ptrAfter === $ ptrBefore );
218
218
219
219
echo "*** array_replace *** \n" ;
220
220
221
221
$ listInt [] = end ($ listInt );
222
- $ ptrBefore = zend_get_zval_ptr ($ listInt );
222
+ $ ptrBefore = zend_get_array_ptr ($ listInt );
223
223
$ listInt = array_replace ($ listInt , ['* ' ]);
224
- $ ptrAfter = zend_get_zval_ptr ($ listInt );
224
+ $ ptrAfter = zend_get_array_ptr ($ listInt );
225
225
var_dump ($ ptrAfter === $ ptrBefore );
226
226
227
227
$ mapObj [] = end ($ mapObj );
228
- $ ptrBefore = zend_get_zval_ptr ($ mapObj );
228
+ $ ptrBefore = zend_get_array_ptr ($ mapObj );
229
229
$ mapObj = array_replace ($ mapObj , ['* ' ]);
230
- $ ptrAfter = zend_get_zval_ptr ($ mapObj );
230
+ $ ptrAfter = zend_get_array_ptr ($ mapObj );
231
231
var_dump ($ ptrAfter === $ ptrBefore );
232
232
233
233
print_r ($ listInt );
0 commit comments