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 に答える