|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2009-04-21 11:19 UTC] Bjorn dot Wiberg at its dot uu dot se
Description: ------------ It appears that explode() returns an empty array (instead of an array with string in it) if limit is negative and delimiter contains a value that is not contained in string. The documentation of explode() (http://www.php.net/manual/en/function.explode.php, section "Return Values") however states that "If delimiter contains a value that is not contained in string, then explode() will return an array containing string", which then does not hold for negative limits. Reproduce code: --------------- <?php print_r(explode('_', 'test', -1)); print_r(explode('_', 'test_underscore', -1)); print_r(explode('_', 'test')); print_r(explode('_', 'test_underscore')); ?> Expected result: ---------------- Array ( [0] => test ) Array ( [0] => test ) Array ( [0] => test ) Array ( [0] => test [1] => underscore ) Actual result: -------------- bwiberg@musica-lp02:~$ php -n -f test.php Array ( ) Array ( [0] => test ) Array ( [0] => test ) Array ( [0] => test [1] => underscore ) PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Dec 08 17:00:01 2025 UTC |
A negative limit reduces the size of the resultant array. So explode('_', 'test') returns a single entry. A limit of -1 essentially throws that entry away. The documentation may be better if it said : "If delimiter contains a value that is not contained in string and a negative limit is used, then an empty array will be returned. For any other limit, an array containing string will be returned."