动态添加字段到http_build_query

时间:2012-12-06 00:01:03

标签: php arrays curl dynamically-generated

我已经构建了一个我想要测试的API。出于这个原因,我正在构建一个简单的客户端来尝试不同的功能(CRUD)。下面是更新生产者的功能,工作正常。但是,我还希望能够更新生产者的部分,例如地址(/ producer / 8?method = put& address = milkyway)。

数组生成器总是包含相同的元素(名称,地址,邮政编码等),但我只想用包含任何内容的数组中的元素更新生成器。我的意思是,如果例如数组中的 name 元素为空,则名称不应包含在* http_build_query *中。如果只有 name 元素包含任何内容,则只应更新名称。

所以,让我们说数组(除了 id 当然是强制性的)包含地址。如何才能动态地将其添加到* http_build_query *?

提前致谢!

public function UpdateProducer($producer) {

    $url = 'http://localhost/webbteknik2/Labb2/api/v1/producers/ . $producer['id'] . '?method=put';

    $data = http_build_query(array(
        'name' => $producer['name'],
        'address' => $producer['address'],
        'zipcode' => $producer['zipcode'],
        'town' => $producer['town'],
        'url' => $producer['url'],
        'imgurl' => $producer['imgurl'],
        'latitude' => $producer['latitude'],
        'longitude' => $producer['longitude'],
    ));

    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    ...
    the rest of the curl code
}

注意:我知道这在很多方面都是错误的编码,但正如我所说的那样,asap希望能够通过客户端测试CRUD功能。

1 个答案:

答案 0 :(得分:2)

使用array_filter删除空元素....

$params = array(
    'name' => $producer['name'],
    'address' => $producer['address'],
    'zipcode' => $producer['zipcode'],
    'town' => $producer['town'],
    'url' => $producer['url'],
    'imgurl' => $producer['imgurl'],
    'latitude' => $producer['latitude'],
    'longitude' => $producer['longitude'],
);

$data = http_build_query(array_filter($params, 'is_null'));