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

ncm*_*ncm 2 php arrays curl

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

 curl_setopt($s,CURLOPT_POST,true);
 curl_setopt($s,CURLOPT_POSTFIELDS,$this->_postFields);
Run Code Online (Sandbox Code Playgroud)

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

我应该如何使用PHP?

♦我尝试过serialize(),unserialize()但是他们的格式与查询字符串不一样吗?
所以我该怎么做?(我需要像.serialize()jQuery那样在数组上工作而不是FORM)

♦并且目标路径不在我的控制之下,并且目标中的$ _POST应该是$ _POST而不是它的base64编码所以我不能使用这样的代码.

$array = array(1,2,3);
$encoded = json_encode($array);
$decoded = json_decode($encoded);
print_r($decoded);
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

提前致谢.

Mon*_*eus 5

我想你可以这样做:

curl_setopt($s, CURLOPT_POSTFIELDS, http_build_query($this->_postFields));
Run Code Online (Sandbox Code Playgroud)


voo*_*417 5

您可以使用http_build_query:

curl_setopt($s, CURLOPT_POSTFIELDS, http_build_query($this->_postFields));
Run Code Online (Sandbox Code Playgroud)

注意

它看起来很漂亮,但要使用这种方法,请注意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
Run Code Online (Sandbox Code Playgroud)

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

  • 这是"意外情景"的英语俚语 (2认同)