查询中的多个值

时间:2018-08-13 08:53:21

标签: sendgrid sendgrid-api-v3

我正在尝试获取类别的统计信息,我想在其中指定多个类别。我有这样的查询参数

$query_params = json_decode('{
          "aggregated_by": "day", 
          "limit": 500,
          "categories": "category1 category2",
          "start_date": "2018-08-12", 
          "end_date": "2018-08-13"}');

很明显,我定义多个类别的方法是错误的,但是正确的方法是什么?我尝试了数组,逗号/空格分隔的值,但是没有运气。

2 个答案:

答案 0 :(得分:0)

您只需要命名each category in a distinct argument。在您的示例中,它可能看起来像:

$query_params = json_decode('{ "aggregated_by": "day", "limit": 500, "categories": "category1", "categories": "category2", "start_date": "2018-08-12", "end_date": "2018-08-13"}');

答案 1 :(得分:0)

所以我通过将参数作为数组传递来解决了这个问题:

$query = array('categories' => ['cat1','cat2']);

然后我修改了sendgrid客户端的buildUrl方法,如下所示:

private function buildUrl($queryParams = null)
    {
        $path = '/' . implode('/', $this->path);
        if (isset($queryParams)) {
            $queryParams = \http_build_query($queryParams);
            $path .= '?' . preg_replace('/%5B(?:[0-9]|[1-9][0-9]+)%5D=/', '=', $queryParams);
        }
        return sprintf('%s%s%s', $this->host, $this->version ?: '', $path);
    }

我添加了preg_replace部分,因此可以正确构建url而不包含嵌套数组中的数组键。