php数组多维到python多维dict

php数组多维到python多维dict,php,python,curl,multidimensional-array,Php,Python,Curl,Multidimensional Array,如何从curl post/get发送php多维数组,使用python获取并转换为多维dict: 要求: 支持php和cgi的web服务器 debian gnu/linux安装: su aptitude install python-pip php5-curl pip install querystring-parser exit curl.class.php <?php class curl { public static function getURL($url, $param

如何从curl post/get发送php多维数组,使用python获取并转换为多维dict:

要求: 支持php和cgi的web服务器

debian gnu/linux安装:

su
aptitude install python-pip php5-curl
pip install querystring-parser
exit
curl.class.php

<?php
class curl
{
    public static function getURL($url, $params = array(), $type = 'get', $curl_opts = array())
    {
        if(!function_exists('curl_init'))
            die('curl module missing');             

        $type = trim(strtolower($type));        
        if(is_array($params) && count($params)>0)
            $params = self::setParams($params);

        $ch = curl_init();              

        if($type=='post')
        {                   
            curl_setopt($ch, CURLOPT_POST, 1);          
            curl_setopt($ch, CURLOPT_POSTFIELDS, $params);          
            curl_setopt($ch, CURLOPT_URL, $url);            
        }       
        else
            curl_setopt($ch, CURLOPT_URL, $url.$params);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

        // set curl param options
        if(is_array($curl_opts))
        {
            if(count($curl_opts)>0)
            {
                foreach($curl_opts as $key => $value)
                    curl_setopt($ch, $key, $value);
            }           
        }                               
        $result = curl_exec($ch);
        return $result; 
    }

    public static function setParams($array, $type = 'get')
    {
        $txt = '';
        if(count($array)>0)
        {
            if($type=='get')
                $txt.= '?';
            $txt.= http_build_query($array);            
        }
        return $txt;
    }   
}
?>
在浏览器中: 格式化输出:

{
  'aitxitxe':
  {
    'aita':
    {
      'alabie': 'maite',
      'semie': 'iban'
    }
  }
}
感谢:


允许改进,谢谢;)

两种语言都支持JSON来处理此类数据


使用这些库可能是个好主意。

两种语言都支持JSON来处理此类数据


使用这些库可能是个好主意。

这里似乎没有问题,只有一堆代码。这里似乎没有问题,只有一堆代码。
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys, cgi
from querystring_parser import parser

# request to dict

form = cgi.FieldStorage()

params = {} 
for k in form.keys():
    params[k] = form[k].value

# dict to query-string

def dict2querystring(dict):
    text = ''
    count = 0
    for i in dict:
        if count > 0:
            text+= "&"
        text+= str(i) + "=" + str(dict[i])
        count += 1
    return text

# request to query-string

params_text = dict2querystring(params)

# query-string to multi-dimensional dict

post_dict = parser.parse(params_text)

print "Content-type: text/plain\n"
print post_dict

sys.exit()
{
  'aitxitxe':
  {
    'aita':
    {
      'alabie': 'maite',
      'semie': 'iban'
    }
  }
}