编辑:从php5开始,建议使用http_build_query
:
string http_build_query ( mixed $query_data [, string $numeric_prefix [,
string $arg_separator [, int $enc_type = PHP_QUERY_RFC1738 ]]] )
手册中的简单示例:
<?php
$data = array('foo'=>'bar',
'baz'=>'boom',
'cow'=>'milk',
'php'=>'hypertext processor');
echo http_build_query($data) . "\n";
/* output:
foo=bar&baz=boom&cow=milk&php=hypertext+processor
*/
?>
在 php5 之前:
从手册中:
CURLOPT_POSTFIELDS
要在 HTTP“POST”操作中发布的完整数据。要发布文件,请在文件名前面加上 @ 并使用完整路径。文件名后面带有格式为“;type=mimetype”的类型,可以显式指定文件类型。此参数可以作为 urlencoded 字符串传递,如 'para1=val1¶2=val2&...'或作为数组,其中字段名称作为键,字段数据作为值。如果 value 是数组,则 Content-Type 标头将设置为多部分/表单数据。从 PHP 5.2.0 开始,传递给此选项的 @ 前缀文件必须采用数组形式才能工作。
所以这样的东西应该可以完美地工作(参数在关联数组中传递):
function preparePostFields($array) {
$params = array();
foreach ($array as $key => $value) {
$params[] = $key . '=' . urlencode($value);
}
return implode('&', $params);
}