我已经构建了一个我想要测试的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功能。
答案 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'));