php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #64607 If second parameter is present, parse_str should return the generated array.
Submitted: 2013-04-07 22:22 UTC Modified: 2013-04-11 12:22 UTC
From: sdeonline at gmail dot com Assigned: ab (profile)
Status: Closed Package: Strings related
PHP Version: Irrelevant OS: Irrelevant
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If this is not your bug, you can add a comment by following this link.
If this is your bug, but you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: sdeonline at gmail dot com
New email:
PHP Version: OS:

 

 [2013-04-07 22:22 UTC] sdeonline at gmail dot com
Description:
------------
---
From manual page: http://www.php.net/function.parse-str#refsect1-function.parse-
str-returnvalues
---

In my humble opinion parse_str should be able to return the array it generates 
when it's not parsing to global vars. 
This could save lines of code and be more understandable.

This is quite useful if converting a received method variable as a parameter to 
another method that requires an array parameter. Because you don't need an extra 
line to just parse the string.

Test script:
---------------
// Initial string
$string = 'foo=bar&fruit=apple';

// This works:
// parse_str($string,$array);
// print_r($array);

// Now this would be better!
print_r(parse_str($string,true));

// Or the easy to the eyes version (but it quite misses the point.
$array = parse_str($string,true);
print_r($array);

Expected result:
----------------
Array 
( 
    [foo] => bar 
    [fruit] => apple 
)
Array 
( 
    [foo] => bar 
    [fruit] => apple 
)

Actual result:
--------------
Fatal error: Only variables can be passed by reference on line 9

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2013-04-08 02:43 UTC] laruence@php.net
it will be big BC break,  and I don't see any strong reason why need this.

thanks
 [2013-04-11 12:22 UTC] ab@php.net
-Status: Open +Status: Closed -Assigned To: +Assigned To: ab
 [2013-04-11 12:22 UTC] ab@php.net
Agree, that shouldn't be implemented due to too much change for no obvious reason. There are countless questions then, like modify your snippet:

$array = true;
parse_str($string, $array);
print_r($array);

What should happen then? Is $array an array() now or true?

@sdeonline if you feel like that's important, you could come up with an RFC clearing up doubtful places.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Apr 18 23:01:27 2024 UTC