我正在尝试使用一个小的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数组。一个var_dump的listingsArray显示所有信息都在那里。
答案 0 :(得分:1)
如果你想要每个商品,我相信你的孩子太深了。
$listingsArray = $xml->listings->listing;
shoudl be
$listingsArray = $xml->listings;
foreach($listingsArray as $listing){
$addition[0] = $listing[$c]->type;
$addition[1] = $listing[$c]->condition;
//etcetera
}
另外什么是$ c?它还有助于发布您的确切错误。调试插入var_dumps时非常有帮助。如果您认为问题是$listingArray
打印出来,看它是否包含你想要的数据。
答案 1 :(得分:0)
更改
$listingsArray = $xml->listings->listing;
到
$listingsArray = $xml->listings;
应该解决问题。你将$ listingsArray设置为列表数组,然后foreach尝试进入另一个级别