0

我已经构建了一个我想要测试的 API。因此,我正在构建一个简单的客户端来尝试不同的功能(CRUD)。下面是更新生产者的功能,效果很好。但是,我还希望能够更新生产者的某些部分,例如地址 (/producers/8?method=put&address=milkyway)。

数组生产者总是包含相同的元素(名称、地址、邮政编码等),但我只想用数组中包含任何内容的元素来更新生产者。我的意思是,例如,如果数组中的name元素为空,则 name 不应包含在 *http_build_query* 中。如果只有name元素包含任何内容,那么只有 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
}

注意:我知道这在很多方面都是糟糕的编码,但正如我所说的,我只想尽快通过客户端测试 CRUD 功能。

4

1 回答 1

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'));
于 2012-12-06T00:09:10.200 回答