【问题标题】:Counting the number of items in a JSON array for Steam API为 Steam API 计算 JSON 数组中的项目数
【发布时间】:2014-04-26 03:29:35
【问题描述】:

我的 Steam API 工作正常,但我想计算一个物品在数组中出现的次数,以便我可以打印我有多少库存物品。

我将这个用于军团要塞 2 的物品

这是我使用的 URL。我拿出了我的 API 密钥和 Steam ID http://api.steampowered.com/IEconItems_440/GetPlayerItems/v0001/?key=APIKey&SteamID=Steam_ID&format=json

它的输出是:

{
"result": {
    "status": 1,
    "num_backpack_slots": 300,
    "items": [
        {
            "id": 1264649944,
            "original_id": 1264649944,
            "defindex": 267,
            "level": 4,
            "quality": 5,
            "inventory": 2147483948,
            "quantity": 1,
            "origin": 1,
            "flag_cannot_trade": true
        },

但是除了那一项之外,还有更多的项目。

我想知道如何计算具有特定defindex的项目数并打印出来。

编辑:

<?php
$link = file_get_contents('http://api.steampowered.com/IEconItems_440/GetPlayer Items/v0001/?key=&SteamID=&format=json');
$myarray = json_decode($link, true);

print $myarray['result']['items'][0]['id'];
?>

【问题讨论】:

  • 我看到你的编辑,我会更新我的答案。

标签: php arrays json api steam


【解决方案1】:

使用 PHP 的count:

<?php
$link = file_get_contents('http://api.steampowered.com/IEconItems_440/GetPlayer Items/v0001/?key=&SteamID=&format=json');
$myarray = json_decode($link, true);

echo count($myarray['result']['items']);
?>

编辑: 要计算具有特定属性的那些,您必须遍历所有这些并增加一个变量:

<?php
$link = file_get_contents('http://api.steampowered.com/IEconItems_440/GetPlayer Items/v0001/?key=&SteamID=&format=json');
$myarray = json_decode($link, true);

$count = 0;
foreach($myarray['result']['items'] as $item){
    if($item['defindex'] == 267){//or whatever you're looking for
        $count++;
    }
}
echo $count;
?>

【讨论】:

  • 完美运行。非常感谢
  • 如果我想搜索多个 defindex 并回显它们的全部内容,该怎么办
  • 您可以在 if 语句中添加更多检查,用|| 分隔它们,这意味着or
【解决方案2】:

您需要遍历您的 items 数组。如果您正在寻找特定的defindex,您只需计算您看到该特定值的次数。

$total = 0;
foreach ($myarray->result->items as $item)
{
    if ($item->defindex == 5000)    // Scrap metal
    {
       $total++;
    }
}

如果您要计算每种类型的项目,您需要执行以下操作:

$inv_array = array();
foreach ($myarray->result->items as $item)
{
    if (array_key_exists($item->defindex,$inv_array))
    {
        $inv_array[$item->defindex]++;
    }
    else
    {
        $inv_array[$item->defindex] = 1;
    }
}

var_dump($inv_array);

这将包含一个数组,其中包含每个唯一 defindex 的计数

您在上面的代码中的错误是您正在查看id。这对于 TF2 经济中的每个项目都是独一无二的,并且会随着每个新所有者以及应用于项目的每个新工具而变化。

【讨论】:

  • 我打印 ID 只是为了举例
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 2017-12-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-18
相关资源
最近更新 更多