0

我正在开发一个玩家价格跟踪功能,每个请求返回 50 个结果,并且我发送了 8 个请求 - 所以我将得到 400 个结果。

我希望将所有 400 个结果放在一个多维数组中(因为我希望有一个元素存储玩家的评分,另一个元素存储价格)并具有一定程度的功能。

// 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 个请求,并且在每次迭代中,我有另一个循环循环所有返回的结果并将它们添加到数组中。

我的问题是我只得到数组中返回的最后 50 个结果,而不是 400 个。

如何修改我的代码,以便将所有 400 个结果存储在一个数组中?

4

2 回答 2

1

您在每个 j 循环上覆盖 binArray,因此 binArray[j] 在第一次循环时始终为 1,即使 i 循环大于 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 回答
0

您应该将 binArray 视为 3D 数组。

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[i][j] = arrayNew(1);
      binArray[i][j][1] = Variables.searchResults.auctionInfo[j].itemData.rating;
      binArray[i][j][2] = Variables.searchResults.auctionInfo[j].buyNowPrice;
}

这应该创建一个像这样结束的数组:

[1..8][1..50][1..2]
于 2013-10-24T09:59:36.073 回答