You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中使用CURLOPT_POSTFIELDS传递同名多字段的方法

关于CURLOPT_POSTFIELDS传递同名多字段的问题

你的写法不可行。当你把二维数组['options[]' => [1,2]]传给CURLOPT_POSTFIELDS时,PHP的curl扩展会将其编码为带索引的格式(比如options%5B0%5D=1&options%5B1%5D=2),这和后端期望的options[]=1&options[]=2(无索引的同名字段)不一致。

下面是两种可行的解决方案:

方案1:手动拼接URL编码字符串

如果你需要application/x-www-form-urlencoded格式的POST数据,直接拼接成符合要求的字符串即可:

$postData = 'options[]=1&options[]=2';
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);

也可以用http_build_query配合数组循环处理,避免手动拼接的繁琐:

$options = [1, 2];
$postParts = [];
foreach ($options as $val) {
    $postParts[] = http_build_query(['options[]' => $val]);
}
$postData = implode('&', $postParts);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);

方案2:使用多部分表单数据(multipart/form-data)

如果后端接受multipart/form-data格式,可以构造包含重复字段名的索引数组:

$postData = [
    ['name' => 'options[]', 'contents' => '1'],
    ['name' => 'options[]', 'contents' => '2']
];
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);

这种方式下,curl会自动生成两个同名的表单字段,无需担心PHP数组键名重复覆盖的问题。

内容的提问来源于stack exchange,提问作者Jayy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 02:28:31