我在使用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)
我的问题是:如何发送数据以便服务器理解它?
谢谢!
答案 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); }