Skip to content

Commit d37d222

Browse files
committed
Make array_multisort() signature more variadic
The second and third arguments are not always the sort_order and sort_flags -- they can also be in reverse order, or be arrays altogether. Move them into the variadic parameter to avoid awkward error messages.
1 parent 0222204 commit d37d222

File tree

6 files changed

+56
-70
lines changed

6 files changed

+56
-70
lines changed

ext/reflection/tests/ReflectionParameter_canBePassedByValue.phpt

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,7 @@ Name: array1
4141
Is passed by reference: yes
4242
Can be passed by value: yes
4343

44-
Name: sort_order
45-
Is passed by reference: yes
46-
Can be passed by value: yes
47-
48-
Name: sort_flags
49-
Is passed by reference: yes
50-
Can be passed by value: yes
51-
52-
Name: arrays
44+
Name: rest
5345
Is passed by reference: yes
5446
Can be passed by value: yes
5547

ext/standard/basic_functions.stub.php

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -222,15 +222,11 @@ function array_udiff_uassoc(array $array, ...$rest): array {}
222222

223223
/**
224224
* @param array $array1
225-
* @param int $sort_order
226-
* @param int $sort_flags
227-
* @param array $arrays
225+
* @param array|int $rest
228226
* @prefer-ref $array1
229-
* @prefer-ref $sort_order
230-
* @prefer-ref $sort_flags
231-
* @prefer-ref $arrays
227+
* @prefer-ref $rest
232228
*/
233-
function array_multisort(&$array1, $sort_order = SORT_ASC, $sort_flags = SORT_REGULAR, &...$arrays): bool {}
229+
function array_multisort(&$array1, &...$rest): bool {}
234230

235231
function array_rand(array $array, int $num_req = 1): int|string|array {}
236232

ext/standard/basic_functions_arginfo.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 56f49d359d2b11383a3f1401d0a3730192c28fc0 */
2+
* Stub hash: 251fc9f272492ab76c4a1a1dabcd768269cf1bde */
33

44
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_set_time_limit, 0, 1, _IS_BOOL, 0)
55
ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 0)
@@ -313,9 +313,7 @@ ZEND_END_ARG_INFO()
313313

314314
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_multisort, 0, 1, _IS_BOOL, 0)
315315
ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, array1)
316-
ZEND_ARG_INFO_WITH_DEFAULT_VALUE(ZEND_SEND_PREFER_REF, sort_order, "SORT_ASC")
317-
ZEND_ARG_INFO_WITH_DEFAULT_VALUE(ZEND_SEND_PREFER_REF, sort_flags, "SORT_REGULAR")
318-
ZEND_ARG_VARIADIC_INFO(ZEND_SEND_PREFER_REF, arrays)
316+
ZEND_ARG_VARIADIC_INFO(ZEND_SEND_PREFER_REF, rest)
319317
ZEND_END_ARG_INFO()
320318

321319
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_array_rand, 0, 1, MAY_BE_LONG|MAY_BE_STRING|MAY_BE_ARRAY)

ext/standard/tests/array/array_multisort_error.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ try {
2525
*** Testing array_multisort() : error conditions ***
2626

2727
-- Testing array_multisort() function with repeated flags --
28-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag that has not already been specified
28+
array_multisort(): Argument #3 must be an array or a sort flag that has not already been specified
2929

3030
-- Testing array_multisort() function with repeated flags --
31-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag that has not already been specified
31+
array_multisort(): Argument #3 must be an array or a sort flag that has not already been specified

ext/standard/tests/array/array_multisort_variation2.phpt

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -117,25 +117,25 @@ bool(true)
117117
bool(true)
118118

119119
--int 12345--
120-
array_multisort(): Argument #2 ($sort_order) must be a valid sort flag
120+
array_multisort(): Argument #2 must be a valid sort flag
121121

122122
--int -12345--
123-
array_multisort(): Argument #2 ($sort_order) must be a valid sort flag
123+
array_multisort(): Argument #2 must be a valid sort flag
124124

125125
--float 10.5--
126-
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
126+
array_multisort(): Argument #2 must be an array or a sort flag
127127

128128
--float -10.5--
129-
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
129+
array_multisort(): Argument #2 must be an array or a sort flag
130130

131131
--float 12.3456789000e10--
132-
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
132+
array_multisort(): Argument #2 must be an array or a sort flag
133133

134134
--float -12.3456789000e10--
135-
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
135+
array_multisort(): Argument #2 must be an array or a sort flag
136136

137137
--float .5--
138-
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
138+
array_multisort(): Argument #2 must be an array or a sort flag
139139

140140
--empty array--
141141
Array sizes are inconsistent
@@ -150,49 +150,49 @@ bool(true)
150150
Array sizes are inconsistent
151151

152152
--uppercase NULL--
153-
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
153+
array_multisort(): Argument #2 must be an array or a sort flag
154154

155155
--lowercase null--
156-
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
156+
array_multisort(): Argument #2 must be an array or a sort flag
157157

158158
--lowercase true--
159-
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
159+
array_multisort(): Argument #2 must be an array or a sort flag
160160

161161
--lowercase false--
162-
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
162+
array_multisort(): Argument #2 must be an array or a sort flag
163163

164164
--uppercase TRUE--
165-
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
165+
array_multisort(): Argument #2 must be an array or a sort flag
166166

167167
--uppercase FALSE--
168-
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
168+
array_multisort(): Argument #2 must be an array or a sort flag
169169

170170
--empty string DQ--
171-
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
171+
array_multisort(): Argument #2 must be an array or a sort flag
172172

173173
--empty string SQ--
174-
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
174+
array_multisort(): Argument #2 must be an array or a sort flag
175175

176176
--string DQ--
177-
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
177+
array_multisort(): Argument #2 must be an array or a sort flag
178178

179179
--string SQ--
180-
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
180+
array_multisort(): Argument #2 must be an array or a sort flag
181181

182182
--mixed case string--
183-
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
183+
array_multisort(): Argument #2 must be an array or a sort flag
184184

185185
--heredoc--
186-
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
186+
array_multisort(): Argument #2 must be an array or a sort flag
187187

188188
--instance of classWithToString--
189-
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
189+
array_multisort(): Argument #2 must be an array or a sort flag
190190

191191
--instance of classWithoutToString--
192-
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
192+
array_multisort(): Argument #2 must be an array or a sort flag
193193

194194
--undefined var--
195-
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
195+
array_multisort(): Argument #2 must be an array or a sort flag
196196

197197
--unset var--
198-
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
198+
array_multisort(): Argument #2 must be an array or a sort flag

ext/standard/tests/array/array_multisort_variation3.phpt

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -103,76 +103,76 @@ foreach($inputs as $key =>$value) {
103103
*** Testing array_multisort() : usage variation ***
104104

105105
--int 0--
106-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag that has not already been specified
106+
array_multisort(): Argument #3 must be an array or a sort flag that has not already been specified
107107

108108
--int 1--
109-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag that has not already been specified
109+
array_multisort(): Argument #3 must be an array or a sort flag that has not already been specified
110110

111111
--int 12345--
112-
array_multisort(): Argument #3 ($sort_flags) must be a valid sort flag
112+
array_multisort(): Argument #3 must be a valid sort flag
113113

114114
--int -12345--
115-
array_multisort(): Argument #3 ($sort_flags) must be a valid sort flag
115+
array_multisort(): Argument #3 must be a valid sort flag
116116

117117
--float 10.5--
118-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
118+
array_multisort(): Argument #3 must be an array or a sort flag
119119

120120
--float -10.5--
121-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
121+
array_multisort(): Argument #3 must be an array or a sort flag
122122

123123
--float 12.3456789000e10--
124-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
124+
array_multisort(): Argument #3 must be an array or a sort flag
125125

126126
--float -12.3456789000e10--
127-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
127+
array_multisort(): Argument #3 must be an array or a sort flag
128128

129129
--float .5--
130-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
130+
array_multisort(): Argument #3 must be an array or a sort flag
131131

132132
--uppercase NULL--
133-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
133+
array_multisort(): Argument #3 must be an array or a sort flag
134134

135135
--lowercase null--
136-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
136+
array_multisort(): Argument #3 must be an array or a sort flag
137137

138138
--lowercase true--
139-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
139+
array_multisort(): Argument #3 must be an array or a sort flag
140140

141141
--lowercase false--
142-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
142+
array_multisort(): Argument #3 must be an array or a sort flag
143143

144144
--uppercase TRUE--
145-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
145+
array_multisort(): Argument #3 must be an array or a sort flag
146146

147147
--uppercase FALSE--
148-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
148+
array_multisort(): Argument #3 must be an array or a sort flag
149149

150150
--empty string DQ--
151-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
151+
array_multisort(): Argument #3 must be an array or a sort flag
152152

153153
--empty string SQ--
154-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
154+
array_multisort(): Argument #3 must be an array or a sort flag
155155

156156
--string DQ--
157-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
157+
array_multisort(): Argument #3 must be an array or a sort flag
158158

159159
--string SQ--
160-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
160+
array_multisort(): Argument #3 must be an array or a sort flag
161161

162162
--mixed case string--
163-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
163+
array_multisort(): Argument #3 must be an array or a sort flag
164164

165165
--heredoc--
166-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
166+
array_multisort(): Argument #3 must be an array or a sort flag
167167

168168
--instance of classWithToString--
169-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
169+
array_multisort(): Argument #3 must be an array or a sort flag
170170

171171
--instance of classWithoutToString--
172-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
172+
array_multisort(): Argument #3 must be an array or a sort flag
173173

174174
--undefined var--
175-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
175+
array_multisort(): Argument #3 must be an array or a sort flag
176176

177177
--unset var--
178-
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
178+
array_multisort(): Argument #3 must be an array or a sort flag

0 commit comments

Comments
 (0)