萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php中http_build_query 函數用法詳解

php中http_build_query 函數用法詳解

在php中http_build_query函數是一個被大多數據程序員看忘記的函數,就我現在都不知道http_build_query的作用,下面我給大家分享一篇文章一起來學習學習吧。

具體方法

當我們使用CURL來post數據的時候,需要設置post的數據

curl_setopt($c, CURLOPT_POSTFIELDS, $post_data);

假如這裡的$data是

$data = array(
   'name'=>'www.111cn.net',
   '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,"","&"); 即可,無需自己寫方法解析了。


http_build_query 就是將一個數組轉換成url ?後面的參數字符串,會自動進行urlencode處理

string http_build_query ( array formdata [, string numeric_prefix])

後面的給數組中沒有指定鍵或者鍵為數字的加下標

copyright © 萬盛學電腦網 all rights reserved