我尝试通过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;
test.php
print_r($_POST);
感谢您的帮助!
欢呼声
答案 0 :(得分: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']);
答案 1 :(得分: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);