SimpleXML和foreach错误

时间:2013-02-04 02:14:42

标签: php api foreach simplexml

$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()

我不明白为什么。这里的想法是贯穿其中列出的每个买单,并比较价格,如果订单更高,则将其设置为最佳。这样做直到所有订单完成并且变量将列出最佳价格,最佳站点和稍后要使用的stationID。我看过很多StackOverflow问题,参考文献等等。许多例子报告三个深度都很好,所以我不明白为什么这是一个无效的论点。

有什么想法吗?

2 个答案:

答案 0 :(得分: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)     声明

我没有测试我的答案,你可以尝试,如果这对你有用,让我知道。 谢谢!

答案 1 :(得分:0)

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

foreach($reader -> quickorder -> buy_orders -> order as $buyOrder)