2

我尝试通过发送一个多数组,cURL但我找不到一个好的方法。

我的代码示例:

$data = array( 'a' => 'testa', 'b' => 'testb', 'c[d]' => 'test1', 'c[e]' => 'test2' );

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

这将起作用并在网站上给出我想要的结果curl_init()

print_r( $_POST )

Array (

    [a] => testa
    [b] => testb
    [c] => Array (

            [d] => test1
            [e] => test2
    )
)

我想动态添加 c 数组,例如:

$c['d'] = 'test1';
$c['e'] = 'test2';

但是,如果我尝试添加一个数组,array_push或者[]我总是在没有数据的数组中得到和(字符串)数组。

任何人都可以帮我做吗?

用于更快测试的整个代码:

$url = 'url_to_test.php';
$data = array( 'a' => 'testa', 'b' => 'testb', 'c[d]' => 'test1', 'c[e]' => 'test2' );
$ch = curl_init($url);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$buffer = curl_exec ($ch);
curl_close ($ch);

echo $buffer;

测试.php

print_r($_POST);

谢谢你的帮助!

干杯

4

2 回答 2

4

$data = array( 'a' => 'testa', 'b' => 'testb', 'c[d]' => 'test1', 'c[e]' => 'test2' )

您只是添加了新的字符串键“c[d]”和“c[e]”。

如果你想要一个嵌套数组,请使用:

$data = array( 'a' => 'testa', 'b' => 'testb', 'c' => 
    array( 'd' => 'test1', 'e' => 'test2' )
)

- 编辑 -

您正在尝试设置 POST 数据,它本质上是一组键值对。您不能提供嵌套数组。但是,您可以序列化嵌套数组并在另一端对其进行解码。例如:

$post_data = array('data' => serialize($data));

在接收端:

$data = unserialize($_POST['data']);
于 2011-09-22T00:56:02.783 回答
0

这是你的解决方案

$urltopost = "http://example.com/webservice/service.php";
$datatopost = array (0 =>array('a'=>'b','c'=>'d'),1 =>array('a'=>'b','c'=>'d'),2 =>array('a'=>'b','c'=>'d'),3 =>array('a'=>'b','c'=>'d'));
$post_data = array('data' => serialize($datatopost));

$ch = curl_init ($urltopost);
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt ($ch, CURLOPT_POSTFIELDS,$post_data);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$returndata = curl_exec ($ch);

echo "<pre>";
print_r(unserialize($returndata));

service.php 代码

$temp = unserialize($_POST['data']);
echo serialize($temp);
于 2016-02-11T12:19:05.950 回答