问题使用cURL PHP发布多维数组

时间:2010-10-06 16:27:59

标签: php post curl multidimensional-array

我在使用PHP cURL发布数组时遇到问题。 我已使用POST变量成功将其他值发布到同一页面。 但这个很难搞清楚。唯一的问题是我应该如何将数据呈现给服务器。

我使用表格分析器检查了原始表格。表单分析器显示POST变量的发送方式如下:

array fundDistribution' => 
     array
        204891 => '20' (length=2)
        354290 => '20' (length=2)
        776401 => '20' (length=2)
        834788 => '40' (length=2)

这些值仅用于显示示例。但它们的长度相同。

我的问题是,当我发送这些值时,响应服务器无法识别这些值:

Array(
[104786] => 20
[354290] => 20
[865063] => 20
[204891] => 20
[834788] => 20)

我的问题是:如何发送数据以便服务器理解它?

谢谢!

4 个答案:

答案 0 :(得分:3)

function flatten_GP_array(array $var,$prefix = false){
        $return = array();
        foreach($var as $idx => $value){
                if(is_scalar($value)){
                        if($prefix){
                                $return[$prefix.'['.$idx.']'] = $value;
                        } else {
                                $return[$idx] = $value;
                        }
                } else {
                        $return = array_merge($return,flatten_GP_array($value,$prefix ? $prefix.'['.$idx.']' : $idx));
                }
        }
        return $return;
}
//...
curl_setopt($ch, CURLOPT_POSTFIELDS,flatten_GP_array($array));

答案 1 :(得分:2)

正如Sepehr Lajevardi所说,你应该使用:

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($your_array));

答案 2 :(得分:0)

您需要将帖子设置为true。然后,您可以在POSTFIELDS选项中传递关联数组。如下图所示。

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $your_array);

答案 3 :(得分:0)

试试这个:

function postVars($vars,$sep='&') {
    $str = '';
    foreach( $vars as $k => $v) {
        if(is_array($v)) {
            foreach($v as $vk=>$vi) {
                $str .= urlencode($k).'['.$vk.']'.'='.urlencode($vi).$sep;
            }
        } else {
            $str .= urlencode($k).'='.urlencode($v).$sep;
        }
    }
    return substr($str, 0, -1);
}