0
$typeID = 34;
        $reader = simplexml_load_file("http://api.eve-central.com/api/quicklook?typeid=".$typeID);
    foreach ($reader -> buy_orders -> order as $orderrow) {
        if($orderrow->price > $bestPrice)
        {
            if($orderrow->security >= "0.5")
            {
                $bestPrice = $orderrow->price;
                $bestStation = $orderrow->station_name;
                $bestStationID = $orderrow->station;
            }
        }
    }

给我:

Warning: Invalid argument supplied for foreach()

我不明白为什么。这里的想法是遍历那里列出的每个购买订单,并比较价格,如果订单更高,则将其设置为最佳。这样做直到所有订单都完成,变量将列出最佳价格、最佳站点和稍后使用的站点 ID。我查看了许多 StackOverflow 问题、参考资料等。许多示例报告深入三级很好,所以我不明白为什么这是一个无效的论点。

有任何想法吗?

4

2 回答 2

1

您能否添加您的 xml 或示例 xml 的架构?

我是 PHP 新手,但根据 PHP foreach 示例,我猜是“foreach”行导致了这个警告,也许它应该像这样工作:

foreach ($reader -> buy_orders as $orderrow) {
...
}

如果 $reader -> buy_orders 是数组表达式,则不应添加 '->order'

请参考 http://php.net/manual/en/control-structures.foreach.php

foreach (array_expression as $value) 语句

我没有测试我的答案,您可以尝试是否适合您并告诉我。谢谢!

于 2013-02-04T02:31:47.183 回答
0

在仔细检查 XML 文档后,我发现我跳过了一个级别。应该是

foreach($reader -> quickorder -> buy_orders -> order as $buyOrder)
于 2013-02-04T02:45:56.827 回答