0

リクエストごとに 50 件の結果を返すプレーヤー価格追跡機能を開発しており、8 件のリクエストを送信しているため、400 件の結果が返されます。

400 件すべての結果を多次元配列 (プレーヤーの評価を格納する 1 つの要素と価格を格納する別の要素が必要なため) に格納し、ある程度の機能を持たせたいと考えています。

// DEFAULT VARIABLES
Variables.binArray = arrayNew(1);
Variables.startPosition = 0;

// LOOP 8x50 TIMES = 400 CARDS
for (i=1; i <= 8; i++) {
    // DO SEARCH
    Variables.searchPlayer = Application.cfcs.Search.doPlayerSearch(URL.assetID,0,"",0,0,0,0,Variables.startPosition,ListLast(Session.pricingAccountPhishingKey,"="),Session.pricingAccountSessionKey);
    if (Variables.searchPlayer.StatusCode EQ "200 OK") {
        Variables.searchResults = DeserializeJSON(Variables.searchPlayer.FileContent);
        Variables.numResults = arrayLen(Variables.searchResults.auctionInfo);
        // IF MORE THAN ONE RESULT RETURNED
        if (StructKeyExists(Variables,"numResults") AND Variables.numResults GT 0) {
            // LOOP ROUND RESULTS
            for (j=1; j<=Variables.numResults; j++) {
                // SET BIN PRICE FROM LOWEST CARD
                if (Variables.searchResults.auctionInfo[i].itemData.assetID EQ URL.assetID AND Variables.searchResults.auctionInfo[i].buyNowPrice GT 0 AND Variables.searchResults.auctionInfo[i].sellerName NEQ "Mendoza Juniors") {
                    binArray[j] = arrayNew(1);
                    binArray[j][1] = Variables.searchResults.auctionInfo[j].itemData.rating;
                    binArray[j][2] = Variables.searchResults.auctionInfo[j].buyNowPrice;
                }
            }
        }
    }
    // INCREASE START POSITION
    Variables.startPosition = Variables.startPosition + 50;
}

ご覧のとおり、8 つの要求を送信する初期ループがあり、各反復内に、返されたすべての結果をループして配列に追加する別のループがあります。

私の問題は、400 ではなく、最後の 50 の結果しか配列に返されないことです。

400 個の結果すべてが 1 つの配列に格納されるようにコードを修正するにはどうすればよいですか?

4

2 に答える 2

1

各 j ループで binArray を上書きしているため、i ループが 1 より大きい場合でも、binArray[j] は最初のループ パスで常に 1 になります。最初に配列の長さを見つける必要があります。

したがって、これを変更してみてください:

binArray[j] = arrayNew(1);
binArray[j][1] = Variables.searchResults.auctionInfo[j].itemData.rating;
binArray[j][2] = Variables.searchResults.auctionInfo[j].buyNowPrice;

これに:

jj = ArrayLen(binArray)+1;
binArray[jj] = arrayNew(1);
binArray[jj][1] = Variables.searchResults.auctionInfo[j].itemData.rating;
binArray[jj][2] = Variables.searchResults.auctionInfo[j].buyNowPrice;
于 2013-10-25T03:33:42.400 に答える