【问题标题】:Invalid argument supplied for foreach() - can't loop through two arrays为 foreach() 提供的参数无效 - 无法遍历两个数组
【发布时间】:2015-05-11 20:45:25
【问题描述】:

我的代码应该将 array_inv 中的“defindex”转换为 array_schema 中的“item_name”:

<?php
    $apikey = "X";
    $steamid = $steamprofile['steamid'];
    $url_inv = "http://api.steampowered.com/IEconItems_730/GetPlayerItems/v0001/?language=en?key=". $apikey . "&steamid=" . $steamid . "&format=json";
    $url_schema = "http://git.optf2.com/schema-tracking/plain/Counter%20Strike%20Global%20Offensive%20Schema?h=counterstrikeglobaloffensive";
    $array_inv_raw = file_get_contents($url_inv);
    $array_schema_raw = file_get_contents($url_schema);

    $array_inv = json_decode($array_inv_raw,true);
    $array_schema = json_decode($array_schema_raw,true);

    foreach($array_inv['result']['items'] as $item){
        foreach($array_schema['result']['items'] as $schemaItem){
            if($item['defindex'] == $schemaItem['defindex']){
                echo $schemaItem['item_name'].'<br />';
                break;
            }
        }
    }
?>

但它会导致这些错误:

警告: 文件获取内容(http://api.steampowered.com/IEconItems_730/GetPlayerItems/v0001/?language=en?key=x&steamid=76561198037897388&format=json): 无法打开流:HTTP 请求失败! HTTP/1.1 403 禁止在 /home/kartm/public_html/scripts/inv.php 在第 6 行

警告:为 foreach() 提供的参数无效 /home/kartm/public_html/scripts/inv.php 在第 12 行

网址: array_inv array_schema

我找不到任何错误。你能告诉我这段代码有什么问题吗?

【问题讨论】:

  • array_inv:tny.cz/55e2b83a 和 array_schema:tny.cz/7ab9eaaf
  • 阅读错误信息 - 您无权获取该网址。由于您没有获取任何内容,因此您没有要解码的数据,也没有要循环的数组。永远不要假设使用外部资源的操作会成功。始终检查失败并将成功视为惊喜。
  • 问题是 ?language=en,我只需要删除它。解决了。​​

标签: php json steam-web-api


【解决方案1】:

这些错误是由 url 中的拼写错误引起的:

http://api.steampowered.com/IEconItems_730/GetPlayerItems/v0001/?language=en?key=x&steamid=76561198037897388&format=json

应该是 & key=x 而不是 ?key=x。

file_get_contents 无法获取 url,因此 foreach 有一个无效的空参数。

【讨论】:

    猜你喜欢
    • 2013-01-25
    • 2011-05-17
    • 2011-02-07
    相关资源
    最近更新 更多