请参阅下面的XML文件片段:
<products>
<product>
<id>2589527</id>
<name>Samsung PS42C450</name>
<manufacturer>Samsung</manufacturer>
<manufacturer-id>22</manufacturer-id>
<description>42 in, Widescreen, Plasma, HD Ready, Samsung DNIe+ ,</description>
<category>Sound and Vision > Vision > TVs</category>
<category-id>2</category-id>
<number-of-retailers>16</number-of-retailers>
<image-url height="217" width="300">http://images.pricerunner.com/product/300x217/101294172/Samsung-PS42C450.jpg</image-url>
<rating type="average">
<average>4,1</average>
</rating>
<rating type="professional">
<average>4,1</average>
<num-ratings>1</num-ratings>
</rating>
<lowest-price currency="GBP">354.44</lowest-price>
<highest-price currency="GBP">549.00</highest-price>
</product>
</products>
我在解析image-url,价格最低和价格最高
方面遇到了问题我正在尝试:
$lowprice = $products->lowest-price;
$highprice = $products->highest-price;
$imageURL = $products->image-url;
但他们什么也没有回来 - 任何想法我做错了什么?
答案 0 :(得分:1)
使用$ products-&gt; {'最低价'}。 (使用花括号,你可以使用特殊字符,如减号)
晒。
答案 1 :(得分:1)
$products->lowest-price;
PHP将解释为
($products->lowest) minus price;
$ products对象中没有“最低”,price
几乎肯定不是定义的常量,因此两者都显示为null,转换为0,最终生成0-0=0
< / p>
答案 2 :(得分:0)
这可能是因为破折号(假设其他属性有效)。尝试使用大括号封装它们,例如
$products->{highest-price};
答案 3 :(得分:0)
有(可能)两个无关的问题。
<强> 1。 XML结构
您的(破损)代码,例如$products->lowest-price
希望访问lowest-price
元素,该元素是$products
的子元素。假设变量以元素命名,您还有一些工作要做。 XML的结构类似于
<products>
└─ <product>
└─ <lowest-price>
所以如果$products
是`产品&gt;元素,然后需要三个步骤。
$products->product->lowest-price
以上可能是一个非问题,而且简直是不幸的变量命名。
<强> 2。元素名称中的短划线( - )
当出现$a->b-c
时,PHP认为$a->b <minus> c
与b-c
不是有效标签(并且没有有效的对象属性名称)。正如“SimpleXML Basic用法”手册页(link)中所述,适当的解决方案是使用变量属性语法ala。
$products->product->{'lowest-price'}
请参阅:http://php.net/simplexml.examples-basic(示例#3)