如何使用PHP序列化数组(数组到查询字符串)

时间:2014-01-16 20:30:01

标签: php arrays curl

我有一个来自$ _POST的数据数组,我想通过curl将它们发送到另一个页面。

 curl_setopt($s,CURLOPT_POST,true);
 curl_setopt($s,CURLOPT_POSTFIELDS,$this->_postFields);

$this->_postFields必须是a=2&b=t之类的字符串吗?
所以,如果我想将curl数据发送到另一个页面,我必须将数组转换为查询字符串吗?

我应该如何使用PHP?

♦我尝试了serialize()unserialize(),但是他们的格式与查询字符串不同吗?
所以我该怎么做? (我需要在jQuery中使用.serialize()之类的数据,而不是FORM)

♦目标路径不受我的控制,目标中的$ _POST应该是$ _POST而不是base64编码所以我不能使用这样的代码。

$array = array(1,2,3);
$encoded = json_encode($array);
$decoded = json_decode($encoded);
print_r($decoded);

任何想法?

提前感谢。

3 个答案:

答案 0 :(得分:5)

我认为你可以这样做:

curl_setopt($s, CURLOPT_POSTFIELDS, http_build_query($this->_postFields));

答案 1 :(得分:5)

您可以使用http_build_query

curl_setopt($s, CURLOPT_POSTFIELDS, http_build_query($this->_postFields));
  

注意

它看起来很漂亮,但要使用这种方法,请注意url编码。接下来:

$_POST["some value"]='value1'; // " " between
$_POST["next value"]='value2'; // " " between

$url = http_build_query($_POST);

echo $url;

// OUTPUT 
some+value=value1&next+value=value2

当然,在发送这个$ url后,我们不会从$ _POST获得预期的变量。

答案 2 :(得分:1)

如果我理解,你可以使用json。

$array = array(1,2,3);
$encoded = json_encode($array);
$decoded = json_decode($encoded);
print_r($decoded); //Look to it

如果不是,可以是:

$array = array(1,2,3);
echo http_build_query($array); //Look to it