0

以下のスクリプトは、明らかにhttp://www.hasoffers.com/wiki/Offer:createに記載されている API を使用しています。S 質問には (少なくとも) 2 つの部分があります。a) 配列内に複数のデータセットを格納する方法。b)APIはそれを受け入れますか....


スクリプトを実行すると、「データ」内の最後の値のみが保存されます。一度により多くのデータを保存するにはどうすればよいですか?

以下のコードには、たとえば 2 つの値があります。1 つは LOLO と呼ばれ、もう 1 つは LELE と呼ばれます。出力には値 LELE のみが表示されます。

これがコードです。

<?php
header('Content-type: application/json');
$base = 'http://api.hasoffers.com/Api?';

$params = array(
'Format' => 'json'
,'Target' => 'Offer'
,'Method' => 'create'
,'Service' => 'HasOffers'
,'Version' => 2
,'NetworkId' => 'demo'
,'NetworkToken' => '....'
,'data' => array(
        'name' => 'LOLO'
        ,'description' => 'test'
        ,'offer_url' => 'http://google.nl'
        ,'preview_url' => 'http://google.nl'
        ,'expiration_date' => '08-08-2013'

        ,'name' => 'LELE'
        ,'description' => 'test'
        ,'offer_url' => 'http://google.nl'
        ,'preview_url' => 'http://google.nl'
        ,'expiration_date' => '08-08-2013' 
)
);

$url = $base . http_build_query( $params );

$result = file_get_contents( $url );


print_r( json_decode( $result) );
?>

これが出力です

[request] => stdClass Object
    (
        [Target] => Offer
        [Format] => json
        [Service] => HasOffers
        [Version] => 2
        [Method] => create
        [NetworkId] => demo
        [NetworkToken] => NETU2nzMw8AYS6EGgjFrjGR88GcSiF
        [data] => stdClass Object
            (
                [name] => LELE
                [description] => test
                [offer_url] => http://google.nl
                [preview_url] => http://google.nl
                [expiration_date] => 08-08-2013
            )

    )
4

5 に答える 5

0

a)配列内に複数のデータセットを格納する方法。

$fixed_params = array(
 'Format' => 'json'
 ,'Target' => 'Offer'
 ,'Method' => 'create'
 ,'Service' => 'HasOffers'
 ,'Version' => 2
 ,'NetworkId' => 'demo'
 ,'NetworkToken' => '....'
);

$offer_data = array(
array(
        'name' => 'LOLO'
        ,'description' => 'test'
        ,'offer_url' => 'http://google.nl'
        ,'preview_url' => 'http://google.nl'
        ,'expiration_date' => '08-08-2013'
),
array(
        'name' => 'LELE'
        ,'description' => 'test'
        ,'offer_url' => 'http://google.nl'
        ,'preview_url' => 'http://google.nl'
        ,'expiration_date' => '08-08-2013' 
 )
);

// store all results here 
$result = array();

// iterates two times since $offer_data has two elements.
foraech ($offer_data as $offern => $data ){
 // store offer's data into fixed_params['data'] element.
 $fixed_params['data'] = $data;

 $url = $base . http_build_query( $fixed_params );

 $result[] =  json_decode( file_get_contents( $url ));
}

print_r($result);

b)APIはそれを受け入れますか...。

APIを理解しているので、一度に1つの作成のみを受け入れます。http://www.hasoffers.com/wiki/Offer:createを参照してください。新しいオファーを作成します。

于 2013-03-01T10:52:28.793 に答える
0

これは私がしたことであり、それは機能します

<?php

// Bestand openen
if (($file = fopen("test2.csv", "r")) !== FALSE) {
    // Eerste rij van Excel als value gebruiken
    $header = fgetcsv($file, 1000, ";");


    // Een loop door Excel file
    while (($data = fgetcsv($file, 1000, ";")) !== FALSE) {



            // combineer de eerste rij met de gegevens
            $combined = array_combine($header,$data);

            // Connectie maken met Hasoffers bij elke waarden
            $base = 'http://api.hasoffers.com/Api?';

            $params = array(
                'Format' => 'json'
                ,'Target' => 'Offer'
                ,'Method' => 'create'
                ,'Service' => 'HasOffers'
                ,'Version' => 2
                ,'NetworkId' => 'demo'
                ,'NetworkToken' => '.....'
                ,'data' => $combined
            );

            $url = $base . http_build_query( $params );

            $result = file_get_contents( $url );

            // Tijdelijk printen
            print_r( json_encode( $result) );
    }
}
?>

CSVファイルを含むループを作成しました。問題は、hasofferとの接続が1回だけで、1つの値しか許可されないことでした。

于 2013-03-05T09:03:46.590 に答える
0
'data' => array(
  array (
    'name' => 'LOLO',
    'description' => 'test',
    'offer_url' => 'http://google.nl',
    'preview_url' => 'http://google.nl'
    'expiration_date' => '08-08-2013'),
  array (
    'name' => 'LELE',
    'description' => 'test',
    'offer_url' => 'http://google.nl',
    'preview_url' => 'http://google.nl',
    'expiration_date' => '08-08-2013'))
于 2013-02-28T09:06:11.057 に答える
0
,'data' => array( array(
        'name' => 'LOLO'
        ,'description' => 'test'
        ,'offer_url' => 'http://google.nl'
        ,'preview_url' => 'http://google.nl'
        ,'expiration_date' => '08-08-2013'
        ),
        array(
        ,'name' => 'LELE'
        ,'description' => 'test'
        ,'offer_url' => 'http://google.nl'
        ,'preview_url' => 'http://google.nl'
        ,'expiration_date' => '08-08-2013' 
        )
)

多次元配列として追加する必要があります。そうしないと、要素が同じキーで上書きされます。あなたの中に追加されていることに注意し array (....)てくださいarray

array( array(

于 2013-02-28T09:07:35.257 に答える
0

または、この方法で保存することもできます

$data = array();
$data[0] = array('name' => 'LELE'
    , 'description' => 'test'
    , 'offer_url' => 'http://google.nl'
    , 'preview_url' => 'http://google.nl'
    , 'expiration_date' => '08-08-2013'
);

$data[1] = array('name' => 'LOLO'
    , 'description' => 'test'
    , 'offer_url' => 'http://google.nl'
    , 'preview_url' => 'http://google.nl'
    , 'expiration_date' => '08-08-2013'
);

$params = array(
    'Format' => 'json'
    , 'Target' => 'Offer'
    , 'Method' => 'create'
    , 'Service' => 'HasOffers'
    , 'Version' => 2
    , 'NetworkId' => 'demo'
    , 'NetworkToken' => 'NETU2nzMw8AYS6EGgjFrjGR88GcSiF'
    , 'data' => $data
);

print_r($params);

// 出力

Array
(
    [Format] => json
    [Target] => Offer
    [Method] => create
    [Service] => HasOffers
    [Version] => 2
    [NetworkId] => demo
    [NetworkToken] => NETU2nzMw8AYS6EGgjFrjGR88GcSiF
    [data] => Array
        (
            [0] => Array
                (
                    [name] => LELE
                    [description] => test
                    [offer_url] => http://google.nl
                    [preview_url] => http://google.nl
                    [expiration_date] => 08-08-2013
                )

            [1] => Array
                (
                    [name] => LOLO
                    [description] => test
                    [offer_url] => http://google.nl
                    [preview_url] => http://google.nl
                    [expiration_date] => 08-08-2013
                )

        )

)
于 2013-02-28T09:10:07.113 に答える