2

我正在尝试使用一个小的 php 脚本从 webservices xml 文件到 SQL 数据库中获取客户端的产品列表,但我似乎无法让它工作。

相关代码如下:

$c = 0;  
...
$xml = simplexml_load_file($completeurl);
$listingsArray = $xml->listings->listing;

foreach($listingsArray as $listing){
    $addition[0] = $listing[$c]->type;
    $addition[1] = $listing[$c]->condition;
    //etcetera
    c = c + 1;
}

XML 文件的格式如下:

<inventory>
    <listings>
        <listing>
            //tags for type, condition, etc
        </listing>
    </listings>
</inventory>

$completeurl 是一个包含 xml 文件的 url 的字符串 $addition 是一个在代码前面定义的数组

我已经为此工作了一段时间,但我似乎无法弄清楚我的代码中的错误在哪里。我遇到的问题是 $listingsArray 应该有接近 100 个元素,但不断出现 0。有人知道我做错了什么吗?

编辑:我尝试改变

$listingsArray = $xml->listings->listing;

$listingsArray = $xml->listings;

但是空字符串仍然被写入 $addition 数组。但是,listingsArray 的 var_dump 显示所有信息都在其中。

4

2 回答 2

1

如果您想要每个列表,我相信您的孩子太深了。

$listingsArray = $xml->listings->listing;

应该是

$listingsArray = $xml->listings;

foreach($listingsArray as $listing){
    $addition[0] = $listing[$c]->type;
    $addition[1] = $listing[$c]->condition;
    //etcetera
}

另外 $c 是什么?它还有助于发布您的确切错误。在调试时插入 var_dumps 非常有帮助。如果您认为探针正在$listingArray 打印出来,看看它是否包含您想要的数据。

于 2012-04-11T17:53:57.923 回答
0

改变

$listingsArray = $xml->listings->listing;

$listingsArray = $xml->listings;

应该解决问题。您将 $listingsArray 设置为列表数组,然后 foreach 尝试下一个级别

于 2012-04-11T17:54:09.737 回答