使用cURL-PHP发布多维数组时出现问题

使用cURL-PHP发布多维数组时出现问题,php,post,curl,multidimensional-array,Php,Post,Curl,Multidimensional Array,我在使用PHP cURL发布数组时遇到问题。 我已经使用POST变量成功地将其他值发布到同一页面。 但这一点很难理解。唯一的问题是如何将数据呈现给服务器 我使用表单分析器检查了原始表单。表单分析器显示POST变量的发送方式如下: array fundDistribution' => array 204891 => '20' (length=2) 354290 => '20' (length=2) 776401 =>

我在使用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)
这些值仅用于显示示例。但它们的长度是一样的

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

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)
我的问题是:如何发送数据以便服务器理解它


谢谢大家!

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

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $your_array);
试试这个:

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); } 函数postVars($vars,$sep='&')){ $str=''; foreach($k=>v的变量){ if(is_数组($v)){ foreach($v为$vk=>$vi){ $str.=urlencode($k)。“['.$vk.].=”.urlencode($vi)。$sep; } }否则{ $str.=urlencode($k)。'='.urlencode($v)。$sep; } } 返回substr($str,0,-1); }
正如Sepher Lajevardi所说,您应该使用:

curl\u setopt($ch,CURLOPT\u POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($your_数组));

您没有显示数据来自何处,以及它如何呈现您在第二个示例中显示的奇怪形状,因此无法就如何更改它提出任何建议。对不起,我已经编辑了原始帖子。还需要更多代码!向我们展示该数组的定义位置,以及发送数据的cURL PHP函数。为我工作。我还没试过瑞肯的答案。谢谢你的回答!我有很多选择。其中,还设置了您引用的选项。将数组传递给CURLOPT_POSTFIELDS会稍微改变cURL的行为。它将以多种格式/post数据的形式发送数据,任何以“@”开头的参数都将被视为文件名。谢谢,我应该使用什么作为前缀?一个“&”或“fundDistribution”?不,在开始时,不要给出前缀,只需去掉第二个参数。它只能设置为递归。不过,我确实希望您发送一个
数组('fundDistribution'=>数组(…rest…)作为输入。是的,我得到这样的结果:数组([fundDistribution[104786]]=>20…)嗯,这个措辞可能不正确。“我希望你”=>“我希望你”;)@克里斯托弗:是的,这是cURL所理解的(它没有多维数组,只有这个函数生成的平面数组)。