1
0
mirror of https://github.com/php/php-src.git synced 2026-04-30 03:33:17 +02:00

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.
This commit is contained in:
Nikita Popov
2020-09-09 11:36:38 +02:00
parent 0222204e7f
commit d37d222835
6 changed files with 56 additions and 70 deletions
@@ -41,15 +41,7 @@ Name: array1
Is passed by reference: yes
Can be passed by value: yes
Name: sort_order
Is passed by reference: yes
Can be passed by value: yes
Name: sort_flags
Is passed by reference: yes
Can be passed by value: yes
Name: arrays
Name: rest
Is passed by reference: yes
Can be passed by value: yes
+3 -7
View File
@@ -222,15 +222,11 @@ function array_udiff_uassoc(array $array, ...$rest): array {}
/**
* @param array $array1
* @param int $sort_order
* @param int $sort_flags
* @param array $arrays
* @param array|int $rest
* @prefer-ref $array1
* @prefer-ref $sort_order
* @prefer-ref $sort_flags
* @prefer-ref $arrays
* @prefer-ref $rest
*/
function array_multisort(&$array1, $sort_order = SORT_ASC, $sort_flags = SORT_REGULAR, &...$arrays): bool {}
function array_multisort(&$array1, &...$rest): bool {}
function array_rand(array $array, int $num_req = 1): int|string|array {}
+2 -4
View File
@@ -1,5 +1,5 @@
/* This is a generated file, edit the .stub.php file instead.
* Stub hash: 56f49d359d2b11383a3f1401d0a3730192c28fc0 */
* Stub hash: 251fc9f272492ab76c4a1a1dabcd768269cf1bde */
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_set_time_limit, 0, 1, _IS_BOOL, 0)
ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 0)
@@ -313,9 +313,7 @@ ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_array_multisort, 0, 1, _IS_BOOL, 0)
ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, array1)
ZEND_ARG_INFO_WITH_DEFAULT_VALUE(ZEND_SEND_PREFER_REF, sort_order, "SORT_ASC")
ZEND_ARG_INFO_WITH_DEFAULT_VALUE(ZEND_SEND_PREFER_REF, sort_flags, "SORT_REGULAR")
ZEND_ARG_VARIADIC_INFO(ZEND_SEND_PREFER_REF, arrays)
ZEND_ARG_VARIADIC_INFO(ZEND_SEND_PREFER_REF, rest)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_array_rand, 0, 1, MAY_BE_LONG|MAY_BE_STRING|MAY_BE_ARRAY)
@@ -25,7 +25,7 @@ try {
*** Testing array_multisort() : error conditions ***
-- Testing array_multisort() function with repeated flags --
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag that has not already been specified
array_multisort(): Argument #3 must be an array or a sort flag that has not already been specified
-- Testing array_multisort() function with repeated flags --
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag that has not already been specified
array_multisort(): Argument #3 must be an array or a sort flag that has not already been specified
@@ -117,25 +117,25 @@ bool(true)
bool(true)
--int 12345--
array_multisort(): Argument #2 ($sort_order) must be a valid sort flag
array_multisort(): Argument #2 must be a valid sort flag
--int -12345--
array_multisort(): Argument #2 ($sort_order) must be a valid sort flag
array_multisort(): Argument #2 must be a valid sort flag
--float 10.5--
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
array_multisort(): Argument #2 must be an array or a sort flag
--float -10.5--
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
array_multisort(): Argument #2 must be an array or a sort flag
--float 12.3456789000e10--
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
array_multisort(): Argument #2 must be an array or a sort flag
--float -12.3456789000e10--
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
array_multisort(): Argument #2 must be an array or a sort flag
--float .5--
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
array_multisort(): Argument #2 must be an array or a sort flag
--empty array--
Array sizes are inconsistent
@@ -150,49 +150,49 @@ bool(true)
Array sizes are inconsistent
--uppercase NULL--
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
array_multisort(): Argument #2 must be an array or a sort flag
--lowercase null--
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
array_multisort(): Argument #2 must be an array or a sort flag
--lowercase true--
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
array_multisort(): Argument #2 must be an array or a sort flag
--lowercase false--
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
array_multisort(): Argument #2 must be an array or a sort flag
--uppercase TRUE--
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
array_multisort(): Argument #2 must be an array or a sort flag
--uppercase FALSE--
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
array_multisort(): Argument #2 must be an array or a sort flag
--empty string DQ--
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
array_multisort(): Argument #2 must be an array or a sort flag
--empty string SQ--
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
array_multisort(): Argument #2 must be an array or a sort flag
--string DQ--
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
array_multisort(): Argument #2 must be an array or a sort flag
--string SQ--
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
array_multisort(): Argument #2 must be an array or a sort flag
--mixed case string--
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
array_multisort(): Argument #2 must be an array or a sort flag
--heredoc--
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
array_multisort(): Argument #2 must be an array or a sort flag
--instance of classWithToString--
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
array_multisort(): Argument #2 must be an array or a sort flag
--instance of classWithoutToString--
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
array_multisort(): Argument #2 must be an array or a sort flag
--undefined var--
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
array_multisort(): Argument #2 must be an array or a sort flag
--unset var--
array_multisort(): Argument #2 ($sort_order) must be an array or a sort flag
array_multisort(): Argument #2 must be an array or a sort flag
@@ -103,76 +103,76 @@ foreach($inputs as $key =>$value) {
*** Testing array_multisort() : usage variation ***
--int 0--
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag that has not already been specified
array_multisort(): Argument #3 must be an array or a sort flag that has not already been specified
--int 1--
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag that has not already been specified
array_multisort(): Argument #3 must be an array or a sort flag that has not already been specified
--int 12345--
array_multisort(): Argument #3 ($sort_flags) must be a valid sort flag
array_multisort(): Argument #3 must be a valid sort flag
--int -12345--
array_multisort(): Argument #3 ($sort_flags) must be a valid sort flag
array_multisort(): Argument #3 must be a valid sort flag
--float 10.5--
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
array_multisort(): Argument #3 must be an array or a sort flag
--float -10.5--
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
array_multisort(): Argument #3 must be an array or a sort flag
--float 12.3456789000e10--
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
array_multisort(): Argument #3 must be an array or a sort flag
--float -12.3456789000e10--
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
array_multisort(): Argument #3 must be an array or a sort flag
--float .5--
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
array_multisort(): Argument #3 must be an array or a sort flag
--uppercase NULL--
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
array_multisort(): Argument #3 must be an array or a sort flag
--lowercase null--
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
array_multisort(): Argument #3 must be an array or a sort flag
--lowercase true--
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
array_multisort(): Argument #3 must be an array or a sort flag
--lowercase false--
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
array_multisort(): Argument #3 must be an array or a sort flag
--uppercase TRUE--
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
array_multisort(): Argument #3 must be an array or a sort flag
--uppercase FALSE--
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
array_multisort(): Argument #3 must be an array or a sort flag
--empty string DQ--
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
array_multisort(): Argument #3 must be an array or a sort flag
--empty string SQ--
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
array_multisort(): Argument #3 must be an array or a sort flag
--string DQ--
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
array_multisort(): Argument #3 must be an array or a sort flag
--string SQ--
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
array_multisort(): Argument #3 must be an array or a sort flag
--mixed case string--
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
array_multisort(): Argument #3 must be an array or a sort flag
--heredoc--
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
array_multisort(): Argument #3 must be an array or a sort flag
--instance of classWithToString--
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
array_multisort(): Argument #3 must be an array or a sort flag
--instance of classWithoutToString--
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
array_multisort(): Argument #3 must be an array or a sort flag
--undefined var--
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
array_multisort(): Argument #3 must be an array or a sort flag
--unset var--
array_multisort(): Argument #3 ($sort_flags) must be an array or a sort flag
array_multisort(): Argument #3 must be an array or a sort flag