http_build_query with same name parameters

前端 未结 2 1209
南旧
南旧 2020-11-29 05:55

Is there a way to build a query automatically with http_build_query using parameters with the same name?

If I do something like

array(\'         


        
相关标签:
2条回答
  • 2020-11-29 06:37

    Here is a function I created to build the query and preserve names. I created this to work with a third-party API that requires multiple query string parameters with the same name.

    function custom_build_query($query_data) {
        $query = array();
        foreach ($query_data as $name => $value) {
            $value = (array) $value;
            array_walk_recursive($value, function($value) use (&$query, $name) {
                $query[] = urlencode($name) . '=' . urlencode($value);
            });
        }
        return implode("&", $query);
    }
    

    Usage:

    echo custom_build_query(['a' => 1, 'b' => 2, 'c' => [3, 4]]);
    

    Outputs:

    a=1&b=2&c=3&c=4
    
    0 讨论(0)
  • 2020-11-29 06:40

    This should do what you want, I had an api that required the same thing.

    $vars = array('foo' => array('x','y'));
    $query = http_build_query($vars, null, '&');
    $string = preg_replace('/%5B(?:[0-9]|[1-9][0-9]+)%5D=/', '=', $query); //foo=x&foo=y
    
    0 讨论(0)
提交回复
热议问题