如何通过php cURL发送2D数组

如何通过php cURL发送2D数组,php,python,curl,multidimensional-array,Php,Python,Curl,Multidimensional Array,我正在使用一个分布式系统,其中php应用程序向python应用程序发送post请求 我的代码非常简单: $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); curl_setopt($ch,CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch

我正在使用一个分布式系统,其中php应用程序向python应用程序发送post请求

我的代码非常简单:

$ch = curl_init();  

curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);    
$output=curl_exec($ch);
我有一个2d php数组,看起来像:

array(3) { [0]=> array(2) { ["a"]=> 'aaa' ["token"]=> string(55) "146bf00b2cb8709" } [1]=> array(2) { ["a"]=> string(52) "bbb" ["token"]=> string(55) "146bf00b2cb96e74302" } [2]=> array(2) { ["a"]=> string(52) "ccc" ["token"]=> string(55) "146bf00b2cb96e6c422417" } }
我想通过php curl传输,但我不确定如何在另一端用python进行解码。

php python
curl_setopt($ch,CURLOPT_POSTFIELDS,$postData)

将请求编码为HTTP查询,并将数据转换为多部分/表单数据


python应用程序必须是HTTP服务器,并且能够接收此请求。解码将由HTTP框架/模块完成。

将请求主体设置为JSON编码的字符串,然后在Python中将其作为JSON读取。这让我更接近了。我有一个关于TypeError的跟进:在Flasky中需要字符串或缓冲区解码json您必须将请求转换为字符串格式,请尝试
str(request.body)
尝试过,但不起作用。这不是100%,但90%的帮助很大。谢谢你给我指路。否决票是不合法的,因为OP没有说他使用的是什么python http服务器,也没有说数据(json/form data/urlencoded)应该以什么格式传输…@Cyrbil是的,但问题是,这是一个普遍的问题,当使用curl连接到php以外的任何东西时。这不是一个curl问题,而是一个php问题,因为php数组如何工作以及http请求如何工作$_POST对于新手来说是非常好的,当一个请求作为一个简单的数组映射到php中时,这一切都是好的,但是由于某种原因,我们不能将它映射回http POST主体,因为php不支持同一个键被多次使用,并且当涉及到http请求时,所有具有多重选择的东西都使用同一个键
// 2d array
$arr = array(array(1,2,3),array(4,5,6),array(7,8,9));
// 2d array into json
$json = json_encode($arr) // [[1,2,3],[4,5,6],[7,8,9]]
send($json)
import json
r = request.body # receives request from php
json = json.loads(r)
print json[0] # [1,2,3]