From: George Peter Banyard Date: Wed, 12 Aug 2020 17:26:54 +0000 (+0200) Subject: Allow number_format to be only passed 3 arguments X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9cb522166c64ddb5e161857681e17e820db70255;p=php Allow number_format to be only passed 3 arguments Closes GH-5977 --- diff --git a/ext/standard/math.c b/ext/standard/math.c index d0c2708256..c5e0234fde 100644 --- a/ext/standard/math.c +++ b/ext/standard/math.c @@ -1097,7 +1097,6 @@ PHP_FUNCTION(number_format) double num; zend_long dec = 0; char *thousand_sep = NULL, *dec_point = NULL; - char thousand_sep_chr = ',', dec_point_chr = '.'; size_t thousand_sep_len = 0, dec_point_len = 0; ZEND_PARSE_PARAMETERS_START(1, 4) @@ -1108,30 +1107,16 @@ PHP_FUNCTION(number_format) Z_PARAM_STRING_OR_NULL(thousand_sep, thousand_sep_len) ZEND_PARSE_PARAMETERS_END(); - switch(ZEND_NUM_ARGS()) { - case 1: - RETURN_STR(_php_math_number_format(num, 0, dec_point_chr, thousand_sep_chr)); - break; - case 2: - RETURN_STR(_php_math_number_format(num, (int)dec, dec_point_chr, thousand_sep_chr)); - break; - case 4: - if (dec_point == NULL) { - dec_point = &dec_point_chr; - dec_point_len = 1; - } - - if (thousand_sep == NULL) { - thousand_sep = &thousand_sep_chr; - thousand_sep_len = 1; - } - - RETVAL_STR(_php_math_number_format_ex(num, (int)dec, - dec_point, dec_point_len, thousand_sep, thousand_sep_len)); - break; - default: - WRONG_PARAM_COUNT; + if (dec_point == NULL) { + dec_point = "."; + dec_point_len = 1; + } + if (thousand_sep == NULL) { + thousand_sep = ","; + thousand_sep_len = 1; } + + RETURN_STR(_php_math_number_format_ex(num, (int)dec, dec_point, dec_point_len, thousand_sep, thousand_sep_len)); } /* }}} */ diff --git a/ext/standard/tests/math/number_format_with_3_args.phpt b/ext/standard/tests/math/number_format_with_3_args.phpt new file mode 100644 index 0000000000..72419ea0e8 --- /dev/null +++ b/ext/standard/tests/math/number_format_with_3_args.phpt @@ -0,0 +1,12 @@ +--TEST-- +number_format should use default thousands seperator when 3 arguments are used +--FILE-- + +--EXPECT-- +string(8) "2,020F14" diff --git a/ext/standard/tests/math/number_format_with_null_args.phpt b/ext/standard/tests/math/number_format_with_null_args.phpt new file mode 100644 index 0000000000..f99a06b980 --- /dev/null +++ b/ext/standard/tests/math/number_format_with_null_args.phpt @@ -0,0 +1,14 @@ +--TEST-- +number_format should use default values when passed null +--FILE-- + +--EXPECT-- +string(8) "2T020.14" +string(8) "2,020F14"