http_build_query 的一个问题

当我们使用CURL来post数据的时候,需要设置post的数据

curl_setopt($c, CURLOPT_POSTFIELDS, $post_data);

假如这里的$data是

$data = array(
   'name'=>'scofield',
   'time'=>'2012-2-3'
)

接下来,需要先将$data变成字符串

$post_data = http_build_query($data);

而采用 http_build_query 转换后再

curl_setopt($c, CURLOPT_POSTFIELDS, $post_data);

看起来没有什么问题。但在实际操作中,$post_data 并没有被post过去。于是,自己写了个转换的方法后就OK了。

function getStr($array,$Separator='&') {
        if (empty($array))
            return;
        if (!is_array($array)) {
            return $array;
        }
        $returnStr = '';
        foreach ($array as $key => $val) {
            $temp = '';
            if (is_array($val)) {
                for ($i = 0; $i < count($val); $i++) {
                    $returnStr .= $key . '[' . $i . ']' . '=' . $val[$i] . $Separator;
                }
            } else {
                $returnStr.= $key . '=' . $val . $Separator;
            }
        }
        $returnStr = substr(trim($returnStr), 0, -1);
        return $returnStr;
    }

感谢 黄斌-huangbin 童鞋的测试 http_build_query($data,"","&"); 即可,无需自己写方法解析了。

 

 

 

 

延伸阅读:

URL处理几个关键的函数parse_url、parse_str与http_build_query

posted @ 2016-07-14 01:37  52php  阅读(1154)  评论(0编辑  收藏  举报