如何使用PHP cURL发送多维数组而没有嵌套数组中的数组键?

斯科夫斯加德

介绍

因此,我正在尝试将表单值作为查询字符串发送到API。API需要这样的查询字符串:

&name=Charles+Hansen&[email protected]&locations=23433&locations=23231&propertyTypes=APARTMENT&propertyTypes=TOWNHOUSE&message=test"

如您所见,取决于用户在表单中选择了多少个属性类型或位置,有多个“ propertyTypes”和“ locations”。因此,我将所有$ _POST数据存储在一个如下所示的多维数组中,因为显然我不能有多个具有相同名称“ propertyTypes”或“ locations”的键:

Array
(
    [name] => Charles Hansen
    [email] => [email protected]
    [locations] => Array
        (
            [0] => 23433
            [1] => 23231
        )
    [propertyTypes] => Array
        (
            [0] => APARTMENT
            [1] => TOWNHOUSE
        )
    [message] => test
)

cURL不支持多维数组,因此在使用它之前,我首先要自己构建查询。这是我的cURL函数:

function sg_order($post_fields) {
    if($post_fields) {
        $query = http_build_query($post_fields);

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, 'https://example.com/order?orgKey=' . constant('ORG_KEY'));
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
          'Content-Type: application/x-www-form-urlencoded',                 
          'Content-Length: ' . strlen($query))
        );
        $result = curl_exec($ch);

        $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

        if(curl_errno($ch)) {
          error_log('Curl error: ' . curl_error($ch) . $result);
        }else{
          error_log('Curl response: ' . $status);
        }
        curl_close($ch);

        return $result;
    }
}

orgKey 是验证所需的参数。

问题

我的问题是,由构建的查询$query = http_build_query($post_fields);包含嵌套数组的键([0],[1]等)。结果$query如下:

&name=Charles+Hansen&[email protected]&locations[0]=23433&locations[1]=23231&propertyTypes[0]=APARTMENT&propertyTypes[1]=TOWNHOUSE&message=test"

如何摆脱键([0],[1]等),使查询看起来与API期望的完全一样?

附加信息

  • 我无法控制API
  • 我没有发送文件,因此解决方案不必使用文件
04FS

如果您不想编写自己的http_build_query版本,则建议您根据手册http://php.net/manual/zh/function.http-build-query中的此用户注释修改版本。.php#111819

    $query = http_build_query($query);
    $query = preg_replace('/%5B[0-9]+%5D/simU', '%5B%5D', $query);

他们正在取代foo[xy]foo[]在这里-因为你不希望保留[]或者,只需更换'%5B%5D'与一个空字符串,而不是preg_replace函数调用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP中的嵌套数组

来自分类Dev

PHP从具有键的数组的多维数组中获取价值

来自分类Dev

在Json(嵌套数组)PHP中搜索键

来自分类Dev

数组中的 PHP 数组 - 嵌套数组 PHP

来自分类Dev

如何使用php中的键拆分多维数组

来自分类Dev

嵌套数组PHP

来自分类Dev

PHP将多维数组与其自身进行比较,并根据嵌套数组中的值删除数组

来自分类Dev

数组值使用PHP嵌套数组

来自分类Dev

如何在JavaScript中通过嵌套数组进行映射,然后检查嵌套数组的属性之一是否没有值?

来自分类Dev

如何对嵌套数组中的所有元素求和?

来自分类Dev

如何从带有对象的嵌套数组中获取值

来自分类Dev

如何使用jq从多个嵌套数组中提取键

来自分类Dev

如何通过php cURL发送多维Json数组

来自分类Dev

如何通过php cURL发送多维Json数组

来自分类Dev

如何解析仅包含没有属性名称的数组和嵌套数组的 JSON 数据?

来自分类Dev

php foreach 多维/嵌套数组获取所有数据

来自分类Dev

如何使用多维数组中的键检索深子数组?

来自分类Dev

遍历PHP中的深层嵌套数组

来自分类Dev

嵌套数组中的PHP foreach循环

来自分类Dev

确定PHP中的无限嵌套数组

来自分类Dev

在PHP中构建嵌套数组

来自分类Dev

遍历PHP中的深层嵌套数组

来自分类Dev

PHP使用array_keys()获取嵌套数组中的键

来自分类Dev

如何使用构造函数Javascript在嵌套数组中输出键值对中的键

来自分类Dev

如何从嵌套数组中获取数据

来自分类Dev

如何更新嵌套数组中的值?

来自分类Dev

如何从嵌套数组中获得承诺?

来自分类Dev

如何使用键数组搜索多维数组

来自分类Dev

如何过滤具有嵌套数组的元素的数组?

Related 相关文章

热门标签

归档