|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2009-06-23 23:25 UTC] wharmby at uk dot ibm dot com
[2009-06-28 02:36 UTC] felipe@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Oct 26 11:00:02 2025 UTC |
Description: ------------ Optional result argument of parse_str now has to be predefined as an array. In previous versions the 2nd optional argument of parse-str could either be an undefined variable or even an existing non-array variable. Either way the function returned the expected array populated with the parsed string. In PHP 6.0 the argument has to be a pre-defined array. Modifying the test below as follows: <?php $s1 = "first=val1&second=val2&third=val3"; $res1 = array(); parse_str($s1, $res1); var_dump($res1); ?> fixes the problem but this is not required on 5.2 and 5.3 so requirement will break applications when they are ported to PHP6. Is this an intended change in behavior or just a side affect introduced when parse_str modified to use zend_parse_parameters()? Should code not be: if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|z", &enc_string, &enc_string_len, &result) == FAILURE) { return; } to maintain the 5./5.3 behaiviour ? Reproduce code: --------------- <?php $s1 = "first=val1&second=val2&third=val3"; parse_str($s1, $res1); var_dump($res1); ?> Expected result: ---------------- array(3) { [u"first"]=> unicode(4) "val1" [u"second"]=> unicode(4) "val2" [u"third"]=> unicode(4) "val3" } Actual result: -------------- NULL Warning: parse_str() expects parameter 2 to be array, null given in ......