diff options
Diffstat (limited to 'ext')
34 files changed, 1183 insertions, 101 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c index ed967e3395..d189c7faef 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -118,6 +118,8 @@ PHP_MINIT_FUNCTION(array) /* {{{ */ REGISTER_LONG_CONSTANT("SORT_NUMERIC", PHP_SORT_NUMERIC, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("SORT_STRING", PHP_SORT_STRING, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("SORT_LOCALE_STRING", PHP_SORT_LOCALE_STRING, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SORT_NATURAL", PHP_SORT_NATURAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SORT_FLAG_CASE", PHP_SORT_FLAG_CASE, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("CASE_LOWER", CASE_LOWER, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("CASE_UPPER", CASE_UPPER, CONST_CS | CONST_PERSISTENT); @@ -141,13 +143,17 @@ PHP_MSHUTDOWN_FUNCTION(array) /* {{{ */ static void php_set_compare_func(int sort_type TSRMLS_DC) /* {{{ */ { - switch (sort_type) { + switch (sort_type & ~PHP_SORT_FLAG_CASE) { case PHP_SORT_NUMERIC: ARRAYG(compare_func) = numeric_compare_function; break; case PHP_SORT_STRING: - ARRAYG(compare_func) = string_compare_function; + ARRAYG(compare_func) = sort_type & PHP_SORT_FLAG_CASE ? string_case_compare_function : string_compare_function; + break; + + case PHP_SORT_NATURAL: + ARRAYG(compare_func) = sort_type & PHP_SORT_FLAG_CASE ? string_natural_case_compare_function : string_natural_compare_function; break; #if HAVE_STRCOLL @@ -3762,7 +3768,7 @@ PHPAPI int php_multisort_compare(const void *a, const void *b TSRMLS_DC) /* {{{ efree(args); \ RETURN_FALSE; -/* {{{ proto bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...]) +/* {{{ proto bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]], ...]) Sort multiple arrays at once similar to how ORDER BY clause works in SQL */ PHP_FUNCTION(array_multisort) { @@ -3812,7 +3818,7 @@ PHP_FUNCTION(array_multisort) parse_state[k] = 1; } } else if (Z_TYPE_PP(args[i]) == IS_LONG) { - switch (Z_LVAL_PP(args[i])) { + switch (Z_LVAL_PP(args[i]) & ~PHP_SORT_FLAG_CASE) { case PHP_SORT_ASC: case PHP_SORT_DESC: /* flag allowed here */ @@ -3829,6 +3835,7 @@ PHP_FUNCTION(array_multisort) case PHP_SORT_REGULAR: case PHP_SORT_NUMERIC: case PHP_SORT_STRING: + case PHP_SORT_NATURAL: #if HAVE_STRCOLL case PHP_SORT_LOCALE_STRING: #endif diff --git a/ext/standard/php_array.h b/ext/standard/php_array.h index 07a38cfd91..779536e006 100644 --- a/ext/standard/php_array.h +++ b/ext/standard/php_array.h @@ -113,6 +113,8 @@ PHPAPI int php_multisort_compare(const void *a, const void *b TSRMLS_DC); #define PHP_SORT_DESC 3 #define PHP_SORT_ASC 4 #define PHP_SORT_LOCALE_STRING 5 +#define PHP_SORT_NATURAL 6 +#define PHP_SORT_FLAG_CASE 8 ZEND_BEGIN_MODULE_GLOBALS(array) int *multisort_flags[2]; diff --git a/ext/standard/php_string.h b/ext/standard/php_string.h index c6d916dbcc..8284204c89 100644 --- a/ext/standard/php_string.h +++ b/ext/standard/php_string.h @@ -143,6 +143,10 @@ PHPAPI void php_explode(zval *delim, zval *str, zval *return_value, long limit); PHPAPI size_t php_strspn(char *s1, char *s2, char *s1_end, char *s2_end); PHPAPI size_t php_strcspn(char *s1, char *s2, char *s1_end, char *s2_end); +PHPAPI int string_natural_compare_function_ex(zval *result, zval *op1, zval *op2, zend_bool case_insensitive TSRMLS_DC); +PHPAPI int string_natural_compare_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); +PHPAPI int string_natural_case_compare_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); + #ifndef HAVE_STRERROR PHPAPI char *php_strerror(int errnum); #define strerror php_strerror diff --git a/ext/standard/string.c b/ext/standard/string.c index 1717b3b711..62599d4019 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -4734,6 +4734,49 @@ static void php_strnatcmp(INTERNAL_FUNCTION_PARAMETERS, int fold_case) } /* }}} */ +PHPAPI int string_natural_compare_function_ex(zval *result, zval *op1, zval *op2, zend_bool case_insensitive TSRMLS_DC) /* {{{ */ +{ + zval op1_copy, op2_copy; + int use_copy1 = 0, use_copy2 = 0, sort_result; + + if (Z_TYPE_P(op1) != IS_STRING) { + zend_make_printable_zval(op1, &op1_copy, &use_copy1); + } + if (Z_TYPE_P(op2) != IS_STRING) { + zend_make_printable_zval(op2, &op2_copy, &use_copy2); + } + + if (use_copy1) { + op1 = &op1_copy; + } + if (use_copy2) { + op2 = &op2_copy; + } + + ZVAL_LONG(result, strnatcmp_ex(Z_STRVAL_P(op1), Z_STRLEN_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op2), case_insensitive)); + + if (use_copy1) { + zval_dtor(op1); + } + if (use_copy2) { + zval_dtor(op2); + } + return SUCCESS; +} +/* }}} */ + +PHPAPI int string_natural_case_compare_function(zval *result, zval *op1, zval *op2 TSRMLS_DC) /* {{{ */ +{ + return string_natural_compare_function_ex(result, op1, op2, 1 TSRMLS_CC); +} +/* }}} */ + +PHPAPI int string_natural_compare_function(zval *result, zval *op1, zval *op2 TSRMLS_DC) /* {{{ */ +{ + return string_natural_compare_function_ex(result, op1, op2, 0 TSRMLS_CC); +} +/* }}} */ + /* {{{ proto int strnatcmp(string s1, string s2) Returns the result of string comparison using 'natural' algorithm */ PHP_FUNCTION(strnatcmp) diff --git a/ext/standard/tests/array/array_multisort_basic1.phpt b/ext/standard/tests/array/array_multisort_basic1.phpt index af5f8df4f3..ab7db94463 100644 --- a/ext/standard/tests/array/array_multisort_basic1.phpt +++ b/ext/standard/tests/array/array_multisort_basic1.phpt @@ -2,7 +2,7 @@ Test array_multisort() function : basic functionality --FILE-- <?php -/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...]) +/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]], ...]) * Description: Sort multiple arrays at once similar to how ORDER BY clause works in SQL * Source code: ext/standard/array.c * Alias to functions: diff --git a/ext/standard/tests/array/array_multisort_basic2.phpt b/ext/standard/tests/array/array_multisort_basic2.phpt index d2c7ac20b7..4a46072e65 100644 --- a/ext/standard/tests/array/array_multisort_basic2.phpt +++ b/ext/standard/tests/array/array_multisort_basic2.phpt @@ -2,7 +2,7 @@ Test array_multisort() function : basic functionality --FILE-- <?php -/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...]) +/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]], ...]) * Description: Sort multiple arrays at once similar to how ORDER BY clause works in SQL * Source code: ext/standard/array.c * Alias to functions: diff --git a/ext/standard/tests/array/array_multisort_case.phpt b/ext/standard/tests/array/array_multisort_case.phpt new file mode 100644 index 0000000000..6be42edf57 --- /dev/null +++ b/ext/standard/tests/array/array_multisort_case.phpt @@ -0,0 +1,73 @@ +--TEST-- +Test array_multisort() function : case-sensitive +--FILE-- +<?php +/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE], ...]) + * Description: Sort multiple arrays at once similar to how ORDER BY clause works in SQL + * Source code: ext/standard/array.c + * Alias to functions: + */ + +echo "*** Testing array_multisort() : case-sensitive\n"; + +$a = array( + 'Second', + 'First.1', + 'First.2', + 'First.3', + 'Twentieth', + 'Tenth', + 'Third', +); + +$b = array( + '2 a', + '1 bb 1', + '1 bB 2', + '1 BB 3', + '20 c', + '10 d', + '3 e', +); + +array_multisort($b, SORT_STRING, $a); + +var_dump($a, $b); + +?> +===DONE=== +--EXPECTF-- +*** Testing array_multisort() : case-sensitive +array(7) { + [0]=> + string(7) "First.3" + [1]=> + string(7) "First.2" + [2]=> + string(7) "First.1" + [3]=> + string(5) "Tenth" + [4]=> + string(6) "Second" + [5]=> + string(9) "Twentieth" + [6]=> + string(5) "Third" +} +array(7) { + [0]=> + string(6) "1 BB 3" + [1]=> + string(6) "1 bB 2" + [2]=> + string(6) "1 bb 1" + [3]=> + string(4) "10 d" + [4]=> + string(3) "2 a" + [5]=> + string(4) "20 c" + [6]=> + string(3) "3 e" +} +===DONE=== diff --git a/ext/standard/tests/array/array_multisort_error.phpt b/ext/standard/tests/array/array_multisort_error.phpt index 7cd95ec169..5956630f84 100644 --- a/ext/standard/tests/array/array_multisort_error.phpt +++ b/ext/standard/tests/array/array_multisort_error.phpt @@ -2,7 +2,7 @@ Test array_multisort() function : error conditions --FILE-- <?php -/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...]) +/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]], ...]) * Description: Sort multiple arrays at once similar to how ORDER BY clause works in SQL * Source code: ext/standard/array.c * Alias to functions: diff --git a/ext/standard/tests/array/array_multisort_incase.phpt b/ext/standard/tests/array/array_multisort_incase.phpt new file mode 100644 index 0000000000..951cce4927 --- /dev/null +++ b/ext/standard/tests/array/array_multisort_incase.phpt @@ -0,0 +1,73 @@ +--TEST-- +Test array_multisort() function : case-insensitive +--FILE-- +<?php +/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE], ...]) + * Description: Sort multiple arrays at once similar to how ORDER BY clause works in SQL + * Source code: ext/standard/array.c + * Alias to functions: + */ + +echo "*** Testing array_multisort() : case-insensitive\n"; + +$a = array( + 'Second', + 'First.1', + 'First.2', + 'First.3', + 'Twentieth', + 'Tenth', + 'Third', +); + +$b = array( + '2 a', + '1 bb 1', + '1 bB 2', + '1 BB 3', + '20 c', + '10 d', + '3 e', +); + +array_multisort($b, SORT_STRING | SORT_FLAG_CASE, $a); + +var_dump($a, $b); + +?> +===DONE=== +--EXPECTF-- +*** Testing array_multisort() : case-insensitive +array(7) { + [0]=> + string(7) "First.1" + [1]=> + string(7) "First.2" + [2]=> + string(7) "First.3" + [3]=> + string(5) "Tenth" + [4]=> + string(6) "Second" + [5]=> + string(9) "Twentieth" + [6]=> + string(5) "Third" +} +array(7) { + [0]=> + string(6) "1 bb 1" + [1]=> + string(6) "1 bB 2" + [2]=> + string(6) "1 BB 3" + [3]=> + string(4) "10 d" + [4]=> + string(3) "2 a" + [5]=> + string(4) "20 c" + [6]=> + string(3) "3 e" +} +===DONE=== diff --git a/ext/standard/tests/array/array_multisort_natural.phpt b/ext/standard/tests/array/array_multisort_natural.phpt new file mode 100644 index 0000000000..e7910882e4 --- /dev/null +++ b/ext/standard/tests/array/array_multisort_natural.phpt @@ -0,0 +1,61 @@ +--TEST-- +Test array_multisort() function : natural sorting +--FILE-- +<?php +/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE], ...]) + * Description: Sort multiple arrays at once similar to how ORDER BY clause works in SQL + * Source code: ext/standard/array.c + * Alias to functions: + */ + +echo "*** Testing array_multisort() : natural sorting\n"; + +$a = array( + 'Second', + 'First', + 'Twentieth', + 'Tenth', + 'Third', +); + +$b = array( + '2 a', + '1 b', + '20 c', + '10 d', + '3 e', +); + +array_multisort($b, SORT_NATURAL, $a); + +var_dump($a, $b); + +?> +===DONE=== +--EXPECTF-- +*** Testing array_multisort() : natural sorting +array(5) { + [0]=> + string(5) "First" + [1]=> + string(6) "Second" + [2]=> + string(5) "Third" + [3]=> + string(5) "Tenth" + [4]=> + string(9) "Twentieth" +} +array(5) { + [0]=> + string(3) "1 b" + [1]=> + string(3) "2 a" + [2]=> + string(3) "3 e" + [3]=> + string(4) "10 d" + [4]=> + string(4) "20 c" +} +===DONE=== diff --git a/ext/standard/tests/array/array_multisort_natural_case.phpt b/ext/standard/tests/array/array_multisort_natural_case.phpt new file mode 100644 index 0000000000..d59e4931b6 --- /dev/null +++ b/ext/standard/tests/array/array_multisort_natural_case.phpt @@ -0,0 +1,73 @@ +--TEST-- +Test array_multisort() function : natural sorting case-sensitive +--FILE-- +<?php +/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE], ...]) + * Description: Sort multiple arrays at once similar to how ORDER BY clause works in SQL + * Source code: ext/standard/array.c + * Alias to functions: + */ + +echo "*** Testing array_multisort() : natural sorting case-sensitive\n"; + +$a = array( + 'Second', + 'First.1', + 'First.2', + 'First.3', + 'Twentieth', + 'Tenth', + 'Third', +); + +$b = array( + '2 a', + '1 bb 1', + '1 bB 2', + '1 BB 3', + '20 c', + '10 d', + '3 e', +); + +array_multisort($b, SORT_NATURAL, $a); + +var_dump($a, $b); + +?> +===DONE=== +--EXPECTF-- +*** Testing array_multisort() : natural sorting case-sensitive +array(7) { + [0]=> + string(7) "First.3" + [1]=> + string(7) "First.2" + [2]=> + string(7) "First.1" + [3]=> + string(6) "Second" + [4]=> + string(5) "Third" + [5]=> + string(5) "Tenth" + [6]=> + string(9) "Twentieth" +} +array(7) { + [0]=> + string(6) "1 BB 3" + [1]=> + string(6) "1 bB 2" + [2]=> + string(6) "1 bb 1" + [3]=> + string(3) "2 a" + [4]=> + string(3) "3 e" + [5]=> + string(4) "10 d" + [6]=> + string(4) "20 c" +} +===DONE=== diff --git a/ext/standard/tests/array/array_multisort_natural_incase.phpt b/ext/standard/tests/array/array_multisort_natural_incase.phpt new file mode 100644 index 0000000000..87514058a9 --- /dev/null +++ b/ext/standard/tests/array/array_multisort_natural_incase.phpt @@ -0,0 +1,73 @@ +--TEST-- +Test array_multisort() function : natural sorting case-insensitive +--FILE-- +<?php +/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE], ...]) + * Description: Sort multiple arrays at once similar to how ORDER BY clause works in SQL + * Source code: ext/standard/array.c + * Alias to functions: + */ + +echo "*** Testing array_multisort() : natural sorting case-insensitive\n"; + +$a = array( + 'Second', + 'First.1', + 'First.2', + 'First.3', + 'Twentieth', + 'Tenth', + 'Third', +); + +$b = array( + '2 a', + '1 bb 1', + '1 bB 2', + '1 BB 3', + '20 c', + '10 d', + '3 e', +); + +array_multisort($b, SORT_NATURAL | SORT_FLAG_CASE, $a); + +var_dump($a, $b); + +?> +===DONE=== +--EXPECTF-- +*** Testing array_multisort() : natural sorting case-insensitive +array(7) { + [0]=> + string(7) "First.1" + [1]=> + string(7) "First.2" + [2]=> + string(7) "First.3" + [3]=> + string(6) "Second" + [4]=> + string(5) "Third" + [5]=> + string(5) "Tenth" + [6]=> + string(9) "Twentieth" +} +array(7) { + [0]=> + string(6) "1 bb 1" + [1]=> + string(6) "1 bB 2" + [2]=> + string(6) "1 BB 3" + [3]=> + string(3) "2 a" + [4]=> + string(3) "3 e" + [5]=> + string(4) "10 d" + [6]=> + string(4) "20 c" +} +===DONE=== diff --git a/ext/standard/tests/array/array_multisort_variation1.phpt b/ext/standard/tests/array/array_multisort_variation1.phpt index 084addef40..93c265922e 100644 --- a/ext/standard/tests/array/array_multisort_variation1.phpt +++ b/ext/standard/tests/array/array_multisort_variation1.phpt @@ -2,7 +2,7 @@ Test array_multisort() function : usage variation --FILE-- <?php -/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...]) +/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]], ...]) * Description: Sort multiple arrays at once similar to how ORDER BY clause works in SQL * Source code: ext/standard/array.c * Alias to functions: diff --git a/ext/standard/tests/array/array_multisort_variation10.phpt b/ext/standard/tests/array/array_multisort_variation10.phpt index 4e9f4890ca..71c4494270 100644 --- a/ext/standard/tests/array/array_multisort_variation10.phpt +++ b/ext/standard/tests/array/array_multisort_variation10.phpt @@ -2,7 +2,7 @@ Test array_multisort() function : usage variation - testing with anonymous arrary arguments --FILE-- <?php -/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...]) +/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]], ...]) * Description: Sort multiple arrays at once similar to how ORDER BY clause works in SQL * Source code: ext/standard/array.c * Alias to functions: diff --git a/ext/standard/tests/array/array_multisort_variation11.phpt b/ext/standard/tests/array/array_multisort_variation11.phpt index 520dd3d51a..046b45f020 100644 --- a/ext/standard/tests/array/array_multisort_variation11.phpt +++ b/ext/standard/tests/array/array_multisort_variation11.phpt @@ -2,7 +2,7 @@ Test array_multisort() function : usage variation - testing with empty array --FILE-- <?php -/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...]) +/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]], ...]) * Description: Sort multiple arrays at once similar to how ORDER BY clause works in SQL * Source code: ext/standard/array.c * Alias to functions: diff --git a/ext/standard/tests/array/array_multisort_variation2.phpt b/ext/standard/tests/array/array_multisort_variation2.phpt index bad20188ed..86210eeb49 100644 --- a/ext/standard/tests/array/array_multisort_variation2.phpt +++ b/ext/standard/tests/array/array_multisort_variation2.phpt @@ -2,7 +2,7 @@ Test array_multisort() function : usage variation --FILE-- <?php -/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...]) +/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]], ...]) * Description: Sort multiple arrays at once similar to how ORDER BY clause works in SQL * Source code: ext/standard/array.c * Alias to functions: @@ -101,7 +101,7 @@ $inputs = array( 'unset var' => @$unset_var, ); -// loop through each element of the array for SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] +// loop through each element of the array for SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]] foreach($inputs as $key =>$value) { echo "\n--$key--\n"; diff --git a/ext/standard/tests/array/array_multisort_variation3.phpt b/ext/standard/tests/array/array_multisort_variation3.phpt index 534374c431..b2cdb05ece 100644 --- a/ext/standard/tests/array/array_multisort_variation3.phpt +++ b/ext/standard/tests/array/array_multisort_variation3.phpt @@ -2,7 +2,7 @@ Test array_multisort() function : usage variation --FILE-- <?php -/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...]) +/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]], ...]) * Description: Sort multiple arrays at once similar to how ORDER BY clause works in SQL * Source code: ext/standard/array.c * Alias to functions: diff --git a/ext/standard/tests/array/array_multisort_variation4.phpt b/ext/standard/tests/array/array_multisort_variation4.phpt index ce2ae23564..5d11fb3ac0 100644 --- a/ext/standard/tests/array/array_multisort_variation4.phpt +++ b/ext/standard/tests/array/array_multisort_variation4.phpt @@ -2,7 +2,7 @@ Test array_multisort() function : usage variation - testing with multiple array arguments --FILE-- <?php -/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...]) +/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]], ...]) * Description: Sort multiple arrays at once similar to how ORDER BY clause works in SQL * Source code: ext/standard/array.c * Alias to functions: diff --git a/ext/standard/tests/array/array_multisort_variation5.phpt b/ext/standard/tests/array/array_multisort_variation5.phpt index 87e60f22b1..76d7092c21 100644 --- a/ext/standard/tests/array/array_multisort_variation5.phpt +++ b/ext/standard/tests/array/array_multisort_variation5.phpt @@ -2,7 +2,7 @@ Test array_multisort() function : usage variation - testing with multiple array arguments --FILE-- <?php -/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...]) +/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]], ...]) * Description: Sort multiple arrays at once similar to how ORDER BY clause works in SQL * Source code: ext/standard/array.c * Alias to functions: diff --git a/ext/standard/tests/array/array_multisort_variation6.phpt b/ext/standard/tests/array/array_multisort_variation6.phpt index 9774d49bad..4e2a62227d 100644 --- a/ext/standard/tests/array/array_multisort_variation6.phpt +++ b/ext/standard/tests/array/array_multisort_variation6.phpt @@ -2,7 +2,7 @@ Test array_multisort() function : usage variation - testing with multiple array arguments --FILE-- <?php -/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...]) +/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]], ...]) * Description: Sort multiple arrays at once similar to how ORDER BY clause works in SQL * Source code: ext/standard/array.c * Alias to functions: diff --git a/ext/standard/tests/array/array_multisort_variation7.phpt b/ext/standard/tests/array/array_multisort_variation7.phpt index c8ca24013a..4e9feb5126 100644 --- a/ext/standard/tests/array/array_multisort_variation7.phpt +++ b/ext/standard/tests/array/array_multisort_variation7.phpt @@ -2,7 +2,7 @@ Test array_multisort() function : usage variation - test sort order of all types --FILE-- <?php -/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...]) +/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]], ...]) * Description: Sort multiple arrays at once similar to how ORDER BY clause works in SQL * Source code: ext/standard/array.c * Alias to functions: diff --git a/ext/standard/tests/array/array_multisort_variation8.phpt b/ext/standard/tests/array/array_multisort_variation8.phpt index 60f7a97e32..1995ee8d2b 100644 --- a/ext/standard/tests/array/array_multisort_variation8.phpt +++ b/ext/standard/tests/array/array_multisort_variation8.phpt @@ -2,7 +2,7 @@ Test array_multisort() function : usage variation - test sort order of all types --FILE-- <?php -/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...]) +/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]], ...]) * Description: Sort multiple arrays at once similar to how ORDER BY clause works in SQL * Source code: ext/standard/array.c * Alias to functions: diff --git a/ext/standard/tests/array/array_multisort_variation9.phpt b/ext/standard/tests/array/array_multisort_variation9.phpt index 98ccd06ed0..b56357a4a3 100644 --- a/ext/standard/tests/array/array_multisort_variation9.phpt +++ b/ext/standard/tests/array/array_multisort_variation9.phpt @@ -2,7 +2,7 @@ Test array_multisort() function : usage variation - test sort order of all types --FILE-- <?php -/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...]) +/* Prototype : bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_NATURAL|SORT_FLAG_CASE]], ...]) * Description: Sort multiple arrays at once similar to how ORDER BY clause works in SQL * Source code: ext/standard/array.c * Alias to functions: diff --git a/ext/standard/tests/array/arsort_basic.phpt b/ext/standard/tests/array/arsort_basic.phpt index 481a590701..24799ab771 100644 --- a/ext/standard/tests/array/arsort_basic.phpt +++ b/ext/standard/tests/array/arsort_basic.phpt @@ -20,7 +20,11 @@ Test arsort() function : basic functionality echo "*** Testing arsort() : basic functionality ***\n"; // an array containing unsorted string values with indices -$unsorted_strings = array( "l" => "lemon", "o" => "orange", "b" => "banana" ); +$unsorted_strings = array( + "l" => "lemon", "o" => "orange", + "O" => "Orange", "O1" => "Orange1", "o2" => "orange2", "O3" => "Orange3", "o20" => "orange20", + "b" => "banana", +); // an array containing unsorted numeric values with indices $unsorted_numerics = array( 1 => 100, 2 => 33, 3 => 555, 4 => 22 ); @@ -49,6 +53,21 @@ $temp_array = $unsorted_strings; var_dump( arsort($temp_array, SORT_STRING) ); // expecting : bool(true) var_dump( $temp_array); +echo "\n-- Testing arsort() by supplying string array (case insensitive), 'flag' = SORT_STRING|SORT_FLAG_CASE --\n"; +$temp_array = $unsorted_strings; +var_dump( arsort($temp_array, SORT_STRING|SORT_FLAG_CASE) ); // expecting : bool(true) +var_dump( $temp_array); + +echo "\n-- Testing arsort() by supplying string array (natural), 'flag' = SORT_NATURAL --\n"; +$temp_array = $unsorted_strings; +var_dump( arsort($temp_array, SORT_NATURAL) ); // expecting : bool(true) +var_dump( $temp_array); + +echo "\n-- Testing arsort() by supplying string array (natural, case insensitive), 'flag' = SORT_NATURAL|SORT_FLAG_CASE --\n"; +$temp_array = $unsorted_strings; +var_dump( arsort($temp_array, SORT_NATURAL|SORT_FLAG_CASE) ); // expecting : bool(true) +var_dump( $temp_array); + echo "\n-- Testing arsort() by supplying numeric array, 'flag' = SORT_NUMERIC --\n"; $temp_array = $unsorted_numerics; var_dump( arsort($temp_array, SORT_NUMERIC) ); // expecting : bool(true) @@ -61,13 +80,23 @@ echo "Done\n"; -- Testing arsort() by supplying string array, 'flag' value is default -- bool(true) -array(3) { +array(8) { + ["o20"]=> + string(8) "orange20" + ["o2"]=> + string(7) "orange2" ["o"]=> string(6) "orange" ["l"]=> string(5) "lemon" ["b"]=> string(6) "banana" + ["O3"]=> + string(7) "Orange3" + ["O1"]=> + string(7) "Orange1" + ["O"]=> + string(6) "Orange" } -- Testing arsort() by supplying numeric array, 'flag' value is default -- @@ -85,13 +114,23 @@ array(4) { -- Testing arsort() by supplying string array, 'flag' = SORT_REGULAR -- bool(true) -array(3) { +array(8) { + ["o20"]=> + string(8) "orange20" + ["o2"]=> + string(7) "orange2" ["o"]=> string(6) "orange" ["l"]=> string(5) "lemon" ["b"]=> string(6) "banana" + ["O3"]=> + string(7) "Orange3" + ["O1"]=> + string(7) "Orange1" + ["O"]=> + string(6) "Orange" } -- Testing arsort() by supplying numeric array, 'flag' = SORT_REGULAR -- @@ -109,9 +148,82 @@ array(4) { -- Testing arsort() by supplying string array, 'flag' = SORT_STRING -- bool(true) -array(3) { +array(8) { + ["o20"]=> + string(8) "orange20" + ["o2"]=> + string(7) "orange2" + ["o"]=> + string(6) "orange" + ["l"]=> + string(5) "lemon" + ["b"]=> + string(6) "banana" + ["O3"]=> + string(7) "Orange3" + ["O1"]=> + string(7) "Orange1" + ["O"]=> + string(6) "Orange" +} + +-- Testing arsort() by supplying string array (case insensitive), 'flag' = SORT_STRING|SORT_FLAG_CASE -- +bool(true) +array(8) { + ["O3"]=> + string(7) "Orange3" + ["o20"]=> + string(8) "orange20" + ["o2"]=> + string(7) "orange2" + ["O1"]=> + string(7) "Orange1" + ["o"]=> + string(6) "orange" + ["O"]=> + string(6) "Orange" + ["l"]=> + string(5) "lemon" + ["b"]=> + string(6) "banana" +} + +-- Testing arsort() by supplying string array (natural), 'flag' = SORT_NATURAL -- +bool(true) +array(8) { + ["o20"]=> + string(8) "orange20" + ["o2"]=> + string(7) "orange2" + ["o"]=> + string(6) "orange" + ["l"]=> + string(5) "lemon" + ["b"]=> + string(6) "banana" + ["O3"]=> + string(7) "Orange3" + ["O1"]=> + string(7) "Orange1" + ["O"]=> + string(6) "Orange" +} + +-- Testing arsort() by supplying string array (natural, case insensitive), 'flag' = SORT_NATURAL|SORT_FLAG_CASE -- +bool(true) +array(8) { + ["o20"]=> + string(8) "orange20" + ["O3"]=> + string(7) "Orange3" + ["o2"]=> + string(7) "orange2" + ["O1"]=> + string(7) "Orange1" ["o"]=> string(6) "orange" + ["O"]=> + string(6) "Orange" ["l"]=> string(5) "lemon" ["b"]=> diff --git a/ext/standard/tests/array/arsort_variation2.phpt b/ext/standard/tests/array/arsort_variation2.phpt index ab04b44099..b85653052f 100644 --- a/ext/standard/tests/array/arsort_variation2.phpt +++ b/ext/standard/tests/array/arsort_variation2.phpt @@ -104,10 +104,10 @@ bool(true) array(3) { [3]=> int(45) - [1]=> - int(10) [2]=> int(2) + [1]=> + int(10) } -- Iteration 3 -- bool(true) @@ -305,4 +305,4 @@ array(3) { [3]=> int(45) } -Done
\ No newline at end of file +Done diff --git a/ext/standard/tests/array/asort_basic.phpt b/ext/standard/tests/array/asort_basic.phpt index 13fa4f794e..b80d31d37f 100644 --- a/ext/standard/tests/array/asort_basic.phpt +++ b/ext/standard/tests/array/asort_basic.phpt @@ -20,7 +20,11 @@ Test asort() function : basic functionality echo "*** Testing asort() : basic functionality ***\n"; // an array containing unsorted string values with indices -$unsorted_strings = array( "l" => "lemon", "o" => "orange", "b" => "banana" ); +$unsorted_strings = array( + "l" => "lemon", "o" => "orange", + "O" => "Orange", "O1" => "Orange1", "o2" => "orange2", "O3" => "Orange3", "o20" => "orange20", + "b" => "banana", +); // an array containing unsorted numeric values with indices $unsorted_numerics = array( 1 => 100, 2 => 33, 3 => 555, 4 => 22 ); @@ -49,6 +53,21 @@ $temp_array = $unsorted_strings; var_dump( asort($temp_array, SORT_STRING) ); // expecting : bool(true) var_dump( $temp_array); +echo "\n-- Testing asort() by supplying string array (case insensitive), 'flag' = SORT_STRING|SORT_FLAG_CASE --\n"; +$temp_array = $unsorted_strings; +var_dump( asort($temp_array, SORT_STRING|SORT_FLAG_CASE) ); // expecting : bool(true) +var_dump( $temp_array); + +echo "\n-- Testing asort() by supplying string array (natural), 'flag' = SORT_NATURAL --\n"; +$temp_array = $unsorted_strings; +var_dump( asort($temp_array, SORT_NATURAL) ); // expecting : bool(true) +var_dump( $temp_array); + +echo "\n-- Testing asort() by supplying string array (natural, case insensitive), 'flag' = SORT_NATURAL|SORT_FLAG_CASE --\n"; +$temp_array = $unsorted_strings; +var_dump( asort($temp_array, SORT_NATURAL|SORT_FLAG_CASE) ); // expecting : bool(true) +var_dump( $temp_array); + echo "\n-- Testing asort() by supplying numeric array, 'flag' = SORT_NUMERIC --\n"; $temp_array = $unsorted_numerics; var_dump( asort($temp_array, SORT_NUMERIC) ); // expecting : bool(true) @@ -61,13 +80,23 @@ echo "Done\n"; -- Testing asort() by supplying string array, 'flag' value is default -- bool(true) -array(3) { +array(8) { + ["O"]=> + string(6) "Orange" + ["O1"]=> + string(7) "Orange1" + ["O3"]=> + string(7) "Orange3" ["b"]=> string(6) "banana" ["l"]=> string(5) "lemon" ["o"]=> string(6) "orange" + ["o2"]=> + string(7) "orange2" + ["o20"]=> + string(8) "orange20" } -- Testing asort() by supplying numeric array, 'flag' value is default -- @@ -85,13 +114,23 @@ array(4) { -- Testing asort() by supplying string array, 'flag' = SORT_REGULAR -- bool(true) -array(3) { +array(8) { + ["O"]=> + string(6) "Orange" + ["O1"]=> + string(7) "Orange1" + ["O3"]=> + string(7) "Orange3" ["b"]=> string(6) "banana" ["l"]=> string(5) "lemon" ["o"]=> string(6) "orange" + ["o2"]=> + string(7) "orange2" + ["o20"]=> + string(8) "orange20" } -- Testing asort() by supplying numeric array, 'flag' = SORT_REGULAR -- @@ -109,13 +148,86 @@ array(4) { -- Testing asort() by supplying string array, 'flag' = SORT_STRING -- bool(true) -array(3) { +array(8) { + ["O"]=> + string(6) "Orange" + ["O1"]=> + string(7) "Orange1" + ["O3"]=> + string(7) "Orange3" + ["b"]=> + string(6) "banana" + ["l"]=> + string(5) "lemon" + ["o"]=> + string(6) "orange" + ["o2"]=> + string(7) "orange2" + ["o20"]=> + string(8) "orange20" +} + +-- Testing asort() by supplying string array (case insensitive), 'flag' = SORT_STRING|SORT_FLAG_CASE -- +bool(true) +array(8) { + ["b"]=> + string(6) "banana" + ["l"]=> + string(5) "lemon" + ["o"]=> + string(6) "orange" + ["O"]=> + string(6) "Orange" + ["O1"]=> + string(7) "Orange1" + ["o2"]=> + string(7) "orange2" + ["o20"]=> + string(8) "orange20" + ["O3"]=> + string(7) "Orange3" +} + +-- Testing asort() by supplying string array (natural), 'flag' = SORT_NATURAL -- +bool(true) +array(8) { + ["O"]=> + string(6) "Orange" + ["O1"]=> + string(7) "Orange1" + ["O3"]=> + string(7) "Orange3" + ["b"]=> + string(6) "banana" + ["l"]=> + string(5) "lemon" + ["o"]=> + string(6) "orange" + ["o2"]=> + string(7) "orange2" + ["o20"]=> + string(8) "orange20" +} + +-- Testing asort() by supplying string array (natural, case insensitive), 'flag' = SORT_NATURAL|SORT_FLAG_CASE -- +bool(true) +array(8) { ["b"]=> string(6) "banana" ["l"]=> string(5) "lemon" ["o"]=> string(6) "orange" + ["O"]=> + string(6) "Orange" + ["O1"]=> + string(7) "Orange1" + ["o2"]=> + string(7) "orange2" + ["O3"]=> + string(7) "Orange3" + ["o20"]=> + string(8) "orange20" } -- Testing asort() by supplying numeric array, 'flag' = SORT_NUMERIC -- @@ -130,4 +242,4 @@ array(4) { [3]=> int(555) } -Done +Done
\ No newline at end of file diff --git a/ext/standard/tests/array/asort_variation2.phpt b/ext/standard/tests/array/asort_variation2.phpt index 07dfe9b815..6cce644331 100644 --- a/ext/standard/tests/array/asort_variation2.phpt +++ b/ext/standard/tests/array/asort_variation2.phpt @@ -102,10 +102,10 @@ array(3) { -- Iteration 2 -- bool(true) array(3) { - [2]=> - int(2) [1]=> int(10) + [2]=> + int(2) [3]=> int(45) } diff --git a/ext/standard/tests/array/krsort_basic.phpt b/ext/standard/tests/array/krsort_basic.phpt index 913256897b..27361eb96d 100644 --- a/ext/standard/tests/array/krsort_basic.phpt +++ b/ext/standard/tests/array/krsort_basic.phpt @@ -20,6 +20,11 @@ echo "*** Testing krsort() : basic functionality ***\n"; // an array containing unsorted string values with indices $unsorted_strings = array( "lemon" => "l", "orange" => "o", "banana" => "b" ); +$unsorted_strings = array( + "l" => "lemon", "o" => "orange", + "O" => "Orange", "O1" => "Orange1", "o2" => "orange2", "O3" => "Orange3", "o20" => "orange20", + "b" => "banana", +); // an array containing unsorted numeric values with indices $unsorted_numerics = array( 100 => 4, 33 => 3, 555 => 2, 22 => 1 ); @@ -48,6 +53,21 @@ $temp_array = $unsorted_strings; var_dump( krsort($temp_array, SORT_STRING) ); // expecting : bool(true) var_dump( $temp_array); +echo "\n-- Testing krsort() by supplying string array (case insensitive), 'flag' = SORT_STRING|SORT_FLAG_CASE --\n"; +$temp_array = $unsorted_strings; +var_dump( krsort($temp_array, SORT_STRING|SORT_FLAG_CASE) ); // expecting : bool(true) +var_dump( $temp_array); + +echo "\n-- Testing krsort() by supplying string array (natural), 'flag' = SORT_NATURAL --\n"; +$temp_array = $unsorted_strings; +var_dump( krsort($temp_array, SORT_NATURAL) ); // expecting : bool(true) +var_dump( $temp_array); + +echo "\n-- Testing krsort() by supplying string array (natural, case insensitive), 'flag' = SORT_NATURAL|SORT_FLAG_CASE --\n"; +$temp_array = $unsorted_strings; +var_dump( krsort($temp_array, SORT_NATURAL|SORT_FLAG_CASE) ); // expecting : bool(true) +var_dump( $temp_array); + echo "\n-- Testing krsort() by supplying numeric array, 'flag' = SORT_NUMERIC --\n"; $temp_array = $unsorted_numerics; var_dump( krsort($temp_array, SORT_NUMERIC) ); // expecting : bool(true) @@ -60,13 +80,23 @@ echo "Done\n"; -- Testing krsort() by supplying string array, 'flag' value is defualt -- bool(true) -array(3) { - ["orange"]=> - string(1) "o" - ["lemon"]=> - string(1) "l" - ["banana"]=> - string(1) "b" +array(8) { + ["o20"]=> + string(8) "orange20" + ["o2"]=> + string(7) "orange2" + ["o"]=> + string(6) "orange" + ["l"]=> + string(5) "lemon" + ["b"]=> + string(6) "banana" + ["O3"]=> + string(7) "Orange3" + ["O1"]=> + string(7) "Orange1" + ["O"]=> + string(6) "Orange" } -- Testing krsort() by supplying numeric array, 'flag' value is defualt -- @@ -84,13 +114,23 @@ array(4) { -- Testing krsort() by supplying string array, 'flag' = SORT_REGULAR -- bool(true) -array(3) { - ["orange"]=> - string(1) "o" - ["lemon"]=> - string(1) "l" - ["banana"]=> - string(1) "b" +array(8) { + ["o20"]=> + string(8) "orange20" + ["o2"]=> + string(7) "orange2" + ["o"]=> + string(6) "orange" + ["l"]=> + string(5) "lemon" + ["b"]=> + string(6) "banana" + ["O3"]=> + string(7) "Orange3" + ["O1"]=> + string(7) "Orange1" + ["O"]=> + string(6) "Orange" } -- Testing krsort() by supplying numeric array, 'flag' = SORT_REGULAR -- @@ -108,13 +148,86 @@ array(4) { -- Testing krsort() by supplying string array, 'flag' = SORT_STRING -- bool(true) -array(3) { - ["orange"]=> - string(1) "o" - ["lemon"]=> - string(1) "l" - ["banana"]=> - string(1) "b" +array(8) { + ["o20"]=> + string(8) "orange20" + ["o2"]=> + string(7) "orange2" + ["o"]=> + string(6) "orange" + ["l"]=> + string(5) "lemon" + ["b"]=> + string(6) "banana" + ["O3"]=> + string(7) "Orange3" + ["O1"]=> + string(7) "Orange1" + ["O"]=> + string(6) "Orange" +} + +-- Testing krsort() by supplying string array (case insensitive), 'flag' = SORT_STRING|SORT_FLAG_CASE -- +bool(true) +array(8) { + ["O3"]=> + string(7) "Orange3" + ["o20"]=> + string(8) "orange20" + ["o2"]=> + string(7) "orange2" + ["O1"]=> + string(7) "Orange1" + ["o"]=> + string(6) "orange" + ["O"]=> + string(6) "Orange" + ["l"]=> + string(5) "lemon" + ["b"]=> + string(6) "banana" +} + +-- Testing krsort() by supplying string array (natural), 'flag' = SORT_NATURAL -- +bool(true) +array(8) { + ["o20"]=> + string(8) "orange20" + ["o2"]=> + string(7) "orange2" + ["o"]=> + string(6) "orange" + ["l"]=> + string(5) "lemon" + ["b"]=> + string(6) "banana" + ["O3"]=> + string(7) "Orange3" + ["O1"]=> + string(7) "Orange1" + ["O"]=> + string(6) "Orange" +} + +-- Testing krsort() by supplying string array (natural, case insensitive), 'flag' = SORT_NATURAL|SORT_FLAG_CASE -- +bool(true) +array(8) { + ["o20"]=> + string(8) "orange20" + ["O3"]=> + string(7) "Orange3" + ["o2"]=> + string(7) "orange2" + ["O1"]=> + string(7) "Orange1" + ["o"]=> + string(6) "orange" + ["O"]=> + string(6) "Orange" + ["l"]=> + string(5) "lemon" + ["b"]=> + string(6) "banana" } -- Testing krsort() by supplying numeric array, 'flag' = SORT_NUMERIC -- @@ -129,4 +242,4 @@ array(4) { [22]=> int(1) } -Done +Done
\ No newline at end of file diff --git a/ext/standard/tests/array/krsort_variation2.phpt b/ext/standard/tests/array/krsort_variation2.phpt index c567f766cb..1376202470 100644 --- a/ext/standard/tests/array/krsort_variation2.phpt +++ b/ext/standard/tests/array/krsort_variation2.phpt @@ -103,10 +103,10 @@ bool(true) array(3) { [45]=> int(45) - [10]=> - int(10) [2]=> int(2) + [10]=> + int(10) } -- Iteration 3 -- bool(true) diff --git a/ext/standard/tests/array/ksort_basic.phpt b/ext/standard/tests/array/ksort_basic.phpt index fdc8bd8dc6..dd9f7a2158 100644 --- a/ext/standard/tests/array/ksort_basic.phpt +++ b/ext/standard/tests/array/ksort_basic.phpt @@ -18,7 +18,11 @@ Test ksort() function : basic functionality echo "*** Testing ksort() : basic functionality ***\n"; // an array containing unsorted string values with indices -$unsorted_strings = array( "lemon" => "l", "orange" => "o", "banana" => "b" ); +$unsorted_strings = array( + "l" => "lemon", "o" => "orange", + "O" => "Orange", "O1" => "Orange1", "o2" => "orange2", "O3" => "Orange3", "o20" => "orange20", + "b" => "banana", +); // an array containing unsorted numeric values with indices $unsorted_numerics = array( 100 => 4, 33 => 3, 555 => 2, 22 => 1 ); @@ -47,6 +51,21 @@ $temp_array = $unsorted_strings; var_dump( ksort($temp_array, SORT_STRING) ); // expecting : bool(true) var_dump( $temp_array); +echo "\n-- Testing ksort() by supplying string array (case insensitive), 'flag' = SORT_STRING|SORT_FLAG_CASE --\n"; +$temp_array = $unsorted_strings; +var_dump( sort($temp_array, SORT_STRING|SORT_FLAG_CASE) ); // expecting : bool(true) +var_dump( $temp_array); + +echo "\n-- Testing ksort() by supplying string array (natural), 'flag' = SORT_NATURAL --\n"; +$temp_array = $unsorted_strings; +var_dump( sort($temp_array, SORT_NATURAL) ); // expecting : bool(true) +var_dump( $temp_array); + +echo "\n-- Testing ksort() by supplying string array (natural, case insensitive), 'flag' = SORT_NATURAL|SORT_FLAG_CASE --\n"; +$temp_array = $unsorted_strings; +var_dump( sort($temp_array, SORT_NATURAL|SORT_FLAG_CASE) ); // expecting : bool(true) +var_dump( $temp_array); + echo "\n-- Testing ksort() by supplying numeric array, 'flag' = SORT_NUMERIC --\n"; $temp_array = $unsorted_numerics; var_dump( ksort($temp_array, SORT_NUMERIC) ); // expecting : bool(true) @@ -59,13 +78,23 @@ echo "Done\n"; -- Testing ksort() by supplying string array, 'flag' value is defualt -- bool(true) -array(3) { - ["banana"]=> - string(1) "b" - ["lemon"]=> - string(1) "l" - ["orange"]=> - string(1) "o" +array(8) { + ["O"]=> + string(6) "Orange" + ["O1"]=> + string(7) "Orange1" + ["O3"]=> + string(7) "Orange3" + ["b"]=> + string(6) "banana" + ["l"]=> + string(5) "lemon" + ["o"]=> + string(6) "orange" + ["o2"]=> + string(7) "orange2" + ["o20"]=> + string(8) "orange20" } -- Testing ksort() by supplying numeric array, 'flag' value is defualt -- @@ -83,13 +112,23 @@ array(4) { -- Testing ksort() by supplying string array, 'flag' = SORT_REGULAR -- bool(true) -array(3) { - ["banana"]=> - string(1) "b" - ["lemon"]=> - string(1) "l" - ["orange"]=> - string(1) "o" +array(8) { + ["O"]=> + string(6) "Orange" + ["O1"]=> + string(7) "Orange1" + ["O3"]=> + string(7) "Orange3" + ["b"]=> + string(6) "banana" + ["l"]=> + string(5) "lemon" + ["o"]=> + string(6) "orange" + ["o2"]=> + string(7) "orange2" + ["o20"]=> + string(8) "orange20" } -- Testing ksort() by supplying numeric array, 'flag' = SORT_REGULAR -- @@ -107,13 +146,86 @@ array(4) { -- Testing ksort() by supplying string array, 'flag' = SORT_STRING -- bool(true) -array(3) { - ["banana"]=> - string(1) "b" - ["lemon"]=> - string(1) "l" - ["orange"]=> - string(1) "o" +array(8) { + ["O"]=> + string(6) "Orange" + ["O1"]=> + string(7) "Orange1" + ["O3"]=> + string(7) "Orange3" + ["b"]=> + string(6) "banana" + ["l"]=> + string(5) "lemon" + ["o"]=> + string(6) "orange" + ["o2"]=> + string(7) "orange2" + ["o20"]=> + string(8) "orange20" +} + +-- Testing ksort() by supplying string array (case insensitive), 'flag' = SORT_STRING|SORT_FLAG_CASE -- +bool(true) +array(8) { + [0]=> + string(6) "banana" + [1]=> + string(5) "lemon" + [2]=> + string(6) "orange" + [3]=> + string(6) "Orange" + [4]=> + string(7) "Orange1" + [5]=> + string(7) "orange2" + [6]=> + string(8) "orange20" + [7]=> + string(7) "Orange3" +} + +-- Testing ksort() by supplying string array (natural), 'flag' = SORT_NATURAL -- +bool(true) +array(8) { + [0]=> + string(6) "Orange" + [1]=> + string(7) "Orange1" + [2]=> + string(7) "Orange3" + [3]=> + string(6) "banana" + [4]=> + string(5) "lemon" + [5]=> + string(6) "orange" + [6]=> + string(7) "orange2" + [7]=> + string(8) "orange20" +} + +-- Testing ksort() by supplying string array (natural, case insensitive), 'flag' = SORT_NATURAL|SORT_FLAG_CASE -- +bool(true) +array(8) { + [0]=> + string(6) "banana" + [1]=> + string(5) "lemon" + [2]=> + string(6) "orange" + [3]=> + string(6) "Orange" + [4]=> + string(7) "Orange1" + [5]=> + string(7) "orange2" + [6]=> + string(7) "Orange3" + [7]=> + string(8) "orange20" } -- Testing ksort() by supplying numeric array, 'flag' = SORT_NUMERIC -- @@ -128,4 +240,4 @@ array(4) { [555]=> int(2) } -Done +Done
\ No newline at end of file diff --git a/ext/standard/tests/array/ksort_variation2.phpt b/ext/standard/tests/array/ksort_variation2.phpt index f765977d21..4969844e75 100644 --- a/ext/standard/tests/array/ksort_variation2.phpt +++ b/ext/standard/tests/array/ksort_variation2.phpt @@ -101,10 +101,10 @@ array(3) { -- Iteration 2 -- bool(true) array(3) { - [2]=> - int(2) [10]=> int(10) + [2]=> + int(2) [45]=> int(45) } diff --git a/ext/standard/tests/array/rsort_basic.phpt b/ext/standard/tests/array/rsort_basic.phpt index 5495be9257..34fcbb7034 100644 --- a/ext/standard/tests/array/rsort_basic.phpt +++ b/ext/standard/tests/array/rsort_basic.phpt @@ -14,7 +14,11 @@ Test rsort() function : basic functionality echo "*** Testing rsort() : basic functionality ***\n"; // associative array containing unsorted string values -$unsorted_strings = array( "l" => "lemon", "o" => "orange", "b" => "banana" ); +$unsorted_strings = array( + "l" => "lemon", "o" => "orange", + "O" => "Orange", "O1" => "Orange1", "o2" => "orange2", "O3" => "Orange3", "o20" => "orange20", + "b" => "banana", +); // array with default keys containing unsorted numeric values $unsorted_numerics = array( 100, 33, 555, 22 ); @@ -44,6 +48,21 @@ $temp_array = $unsorted_strings; var_dump( rsort($temp_array, SORT_STRING) ); var_dump( $temp_array); +echo "\n-- Testing rsort() by supplying string array (case insensitive), 'flag' = SORT_STRING|SORT_FLAG_CASE --\n"; +$temp_array = $unsorted_strings; +var_dump( rsort($temp_array, SORT_STRING|SORT_FLAG_CASE) ); // expecting : bool(true) +var_dump( $temp_array); + +echo "\n-- Testing rsort() by supplying string array (natural), 'flag' = SORT_NATURAL --\n"; +$temp_array = $unsorted_strings; +var_dump( rsort($temp_array, SORT_NATURAL) ); // expecting : bool(true) +var_dump( $temp_array); + +echo "\n-- Testing rsort() by supplying string array (natural, case insensitive), 'flag' = SORT_NATURAL|SORT_FLAG_CASE --\n"; +$temp_array = $unsorted_strings; +var_dump( rsort($temp_array, SORT_NATURAL|SORT_FLAG_CASE) ); // expecting : bool(true) +var_dump( $temp_array); + echo "\n-- Testing rsort() by supplying numeric array, 'flag' = SORT_NUMERIC --\n"; $temp_array = $unsorted_numerics; var_dump( rsort($temp_array, SORT_NUMERIC) ); @@ -57,13 +76,23 @@ echo "Done"; -- Testing rsort() by supplying string array, 'flag' value is defualt -- bool(true) -array(3) { +array(8) { [0]=> - string(6) "orange" + string(8) "orange20" [1]=> - string(5) "lemon" + string(7) "orange2" [2]=> + string(6) "orange" + [3]=> + string(5) "lemon" + [4]=> string(6) "banana" + [5]=> + string(7) "Orange3" + [6]=> + string(7) "Orange1" + [7]=> + string(6) "Orange" } -- Testing rsort() by supplying numeric array, 'flag' value is defualt -- @@ -81,13 +110,23 @@ array(4) { -- Testing rsort() by supplying string array, 'flag' = SORT_REGULAR -- bool(true) -array(3) { +array(8) { [0]=> - string(6) "orange" + string(8) "orange20" [1]=> - string(5) "lemon" + string(7) "orange2" [2]=> + string(6) "orange" + [3]=> + string(5) "lemon" + [4]=> string(6) "banana" + [5]=> + string(7) "Orange3" + [6]=> + string(7) "Orange1" + [7]=> + string(6) "Orange" } -- Testing rsort() by supplying numeric array, 'flag' = SORT_REGULAR -- @@ -105,12 +144,85 @@ array(4) { -- Testing rsort() by supplying string array, 'flag' = SORT_STRING -- bool(true) -array(3) { +array(8) { + [0]=> + string(8) "orange20" + [1]=> + string(7) "orange2" + [2]=> + string(6) "orange" + [3]=> + string(5) "lemon" + [4]=> + string(6) "banana" + [5]=> + string(7) "Orange3" + [6]=> + string(7) "Orange1" + [7]=> + string(6) "Orange" +} + +-- Testing rsort() by supplying string array (case insensitive), 'flag' = SORT_STRING|SORT_FLAG_CASE -- +bool(true) +array(8) { [0]=> + string(7) "Orange3" + [1]=> + string(8) "orange20" + [2]=> + string(7) "orange2" + [3]=> + string(7) "Orange1" + [4]=> string(6) "orange" + [5]=> + string(6) "Orange" + [6]=> + string(5) "lemon" + [7]=> + string(6) "banana" +} + +-- Testing rsort() by supplying string array (natural), 'flag' = SORT_NATURAL -- +bool(true) +array(8) { + [0]=> + string(8) "orange20" [1]=> + string(7) "orange2" + [2]=> + string(6) "orange" + [3]=> string(5) "lemon" + [4]=> + string(6) "banana" + [5]=> + string(7) "Orange3" + [6]=> + string(7) "Orange1" + [7]=> + string(6) "Orange" +} + +-- Testing rsort() by supplying string array (natural, case insensitive), 'flag' = SORT_NATURAL|SORT_FLAG_CASE -- +bool(true) +array(8) { + [0]=> + string(8) "orange20" + [1]=> + string(7) "Orange3" [2]=> + string(7) "orange2" + [3]=> + string(7) "Orange1" + [4]=> + string(6) "orange" + [5]=> + string(6) "Orange" + [6]=> + string(5) "lemon" + [7]=> string(6) "banana" } diff --git a/ext/standard/tests/array/sort_basic.phpt b/ext/standard/tests/array/sort_basic.phpt index 3cf653f208..460b572fc1 100644 --- a/ext/standard/tests/array/sort_basic.phpt +++ b/ext/standard/tests/array/sort_basic.phpt @@ -20,7 +20,11 @@ Test sort() function : basic functionality echo "*** Testing sort() : basic functionality ***\n"; // associative array containing unsorted string values -$unsorted_strings = array( "l" => "lemon", "o" => "orange", "b" => "banana" ); +$unsorted_strings = array( + "l" => "lemon", "o" => "orange", + "O" => "Orange", "O1" => "Orange1", "o2" => "orange2", "O3" => "Orange3", "o20" => "orange20", + "b" => "banana", +); // array with default keys containing unsorted numeric values $unsorted_numerics = array( 100, 33, 555, 22 ); @@ -50,6 +54,21 @@ $temp_array = $unsorted_strings; var_dump( sort($temp_array, SORT_STRING) ); // expecting : bool(true) var_dump( $temp_array); +echo "\n-- Testing sort() by supplying string array (case insensitive), 'flag' = SORT_STRING|SORT_FLAG_CASE --\n"; +$temp_array = $unsorted_strings; +var_dump( sort($temp_array, SORT_STRING|SORT_FLAG_CASE) ); // expecting : bool(true) +var_dump( $temp_array); + +echo "\n-- Testing sort() by supplying string array (natural), 'flag' = SORT_NATURAL --\n"; +$temp_array = $unsorted_strings; +var_dump( sort($temp_array, SORT_NATURAL) ); // expecting : bool(true) +var_dump( $temp_array); + +echo "\n-- Testing sort() by supplying string array (natural, case insensitive), 'flag' = SORT_NATURAL|SORT_FLAG_CASE --\n"; +$temp_array = $unsorted_strings; +var_dump( sort($temp_array, SORT_NATURAL|SORT_FLAG_CASE) ); // expecting : bool(true) +var_dump( $temp_array); + echo "\n-- Testing sort() by supplying numeric array, 'flag' = SORT_NUMERIC --\n"; $temp_array = $unsorted_numerics; var_dump( sort($temp_array, SORT_NUMERIC) ); // expecting : bool(true) @@ -62,13 +81,23 @@ echo "Done\n"; -- Testing sort() by supplying string array, 'flag' value is defualt -- bool(true) -array(3) { +array(8) { [0]=> - string(6) "banana" + string(6) "Orange" [1]=> - string(5) "lemon" + string(7) "Orange1" [2]=> + string(7) "Orange3" + [3]=> + string(6) "banana" + [4]=> + string(5) "lemon" + [5]=> string(6) "orange" + [6]=> + string(7) "orange2" + [7]=> + string(8) "orange20" } -- Testing sort() by supplying numeric array, 'flag' value is defualt -- @@ -86,13 +115,23 @@ array(4) { -- Testing sort() by supplying string array, 'flag' = SORT_REGULAR -- bool(true) -array(3) { +array(8) { [0]=> - string(6) "banana" + string(6) "Orange" [1]=> - string(5) "lemon" + string(7) "Orange1" [2]=> + string(7) "Orange3" + [3]=> + string(6) "banana" + [4]=> + string(5) "lemon" + [5]=> string(6) "orange" + [6]=> + string(7) "orange2" + [7]=> + string(8) "orange20" } -- Testing sort() by supplying numeric array, 'flag' = SORT_REGULAR -- @@ -110,13 +149,86 @@ array(4) { -- Testing sort() by supplying string array, 'flag' = SORT_STRING -- bool(true) -array(3) { +array(8) { + [0]=> + string(6) "Orange" + [1]=> + string(7) "Orange1" + [2]=> + string(7) "Orange3" + [3]=> + string(6) "banana" + [4]=> + string(5) "lemon" + [5]=> + string(6) "orange" + [6]=> + string(7) "orange2" + [7]=> + string(8) "orange20" +} + +-- Testing sort() by supplying string array (case insensitive), 'flag' = SORT_STRING|SORT_FLAG_CASE -- +bool(true) +array(8) { [0]=> string(6) "banana" [1]=> string(5) "lemon" [2]=> string(6) "orange" + [3]=> + string(6) "Orange" + [4]=> + string(7) "Orange1" + [5]=> + string(7) "orange2" + [6]=> + string(8) "orange20" + [7]=> + string(7) "Orange3" +} + +-- Testing sort() by supplying string array (natural), 'flag' = SORT_NATURAL -- +bool(true) +array(8) { + [0]=> + string(6) "Orange" + [1]=> + string(7) "Orange1" + [2]=> + string(7) "Orange3" + [3]=> + string(6) "banana" + [4]=> + string(5) "lemon" + [5]=> + string(6) "orange" + [6]=> + string(7) "orange2" + [7]=> + string(8) "orange20" +} + +-- Testing sort() by supplying string array (natural, case insensitive), 'flag' = SORT_NATURAL|SORT_FLAG_CASE -- +bool(true) +array(8) { + [0]=> + string(6) "banana" + [1]=> + string(5) "lemon" + [2]=> + string(6) "orange" + [3]=> + string(6) "Orange" + [4]=> + string(7) "Orange1" + [5]=> + string(7) "orange2" + [6]=> + string(7) "Orange3" + [7]=> + string(8) "orange20" } -- Testing sort() by supplying numeric array, 'flag' = SORT_NUMERIC -- @@ -131,4 +243,4 @@ array(4) { [3]=> int(555) } -Done +Done
\ No newline at end of file diff --git a/ext/standard/tests/array/sort_variation2.phpt b/ext/standard/tests/array/sort_variation2.phpt index 4304ecb767..7cb8ed642a 100644 --- a/ext/standard/tests/array/sort_variation2.phpt +++ b/ext/standard/tests/array/sort_variation2.phpt @@ -106,9 +106,9 @@ array(3) { bool(true) array(3) { [0]=> - int(2) - [1]=> int(10) + [1]=> + int(2) [2]=> int(45) } |