2012-12-06 174 views
0

我已經建立,我想測試的API。出於這個原因,我正在構建一個簡單的客戶端來嘗試不同的功能(CRUD)。以下是更新生產者的功能,工作正常。但是,我也希望能夠更新制造商的零件,例如,地址(/ producer/8?method = put & address = milkyway)。動態字段添加到http_build_query

數組生產者總是包含相同的元素(姓名,地址,郵政編碼等),但我只想更新其中包含的任何數組中的元素製片人。我的意思與是,例如,如果陣列中的元素爲空,則名稱不應該包含在* http_build_query *。如果只有名稱元素包含任何內容,則只應更新名稱。

所以,讓我們說,數組(除了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功能。

回答

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')); 
+3

你應該使用'is_null'作爲回調。否則,你一個快速和良好的答案過濾falsy值像串0 – goat

+0

@rambocoder,好點的,更新 – Crisp

+0

工作就像一個魅力,非常感謝! – holyredbeard