if (limit == 0 || limit == 1) {
add_index_stringl(return_value, 0, Z_STRVAL_PP(str), Z_STRLEN_PP(str), 1);
- } else if (limit < 0 && argc == 3) {
+ } else if (limit < -1 && argc == 3) {
php_explode_negative_limit(*delim, *str, return_value, limit);
} else {
php_explode(*delim, *str, return_value, limit);
--- /dev/null
+--TEST--
+Bug #47546 (Default value for limit parameter in explode is 0, not -1)
+--FILE--
+<?php
+$str = 'one|two|three|four';
+
+print_r(explode('|', $str));
+print_r(explode('|', $str, -1));
+?>
+--EXPECT--
+Array
+(
+ [0] => one
+ [1] => two
+ [2] => three
+ [3] => four
+)
+Array
+(
+ [0] => one
+ [1] => two
+ [2] => three
+ [3] => four
+)