我是一名PHP /开发新手,我无法找到解决此特定问题的教程。
我有一个来自API的XML文件,其中包含在线商店的产品信息。每个物理产品都有多个“样式”,需要在同一页面上列出。我想用他们的id号做到这一点。
以下是我的Feed的简化版本:
<products>
<product id="001">
<name>Shirt 1 - Women's</name>
<price>12.00</price>
<color>blue</color>
</product>
<product id="002">
<name>Shirt 1 - Men's</name>
<price>12.00</price>
<color>red</color>
</product>
...
<product id="023">
<name>Shirt 12 - Women's</name>
<price>15.00</price>
<color>purple</color>
</product>
<product id="024">
<name>Shirt 12 - Men's</name>
<price>15.00</price>
<color>yellow</color>
</product>
</products>
因此,在shirt12.php
上,我需要从<product id="023">
和<product id="024">
获取只是信息,因为这些信息包含我对“Shirt 12”样式的信息。
使用simplexml我可以使用以下代码获取一个<product>
的数据:
foreach ($products->product as $product) {
if ($product['id'] == '024') {
//display data using some code
}
}
我不知道我是怎么做两个以上的。如果可以用simplexml完成,那就太好了,因为我最熟悉它。但是如果我需要使用不同的XML解析方法,我也会对此持开放态度,但它需要与wordpress兼容。
答案 0 :(得分:1)
$xml=simplexml_load_string(<<<XML
<products>
<product id="001">
<name>Shirt 1 - Women's</name>
<price>12.00</price>
<color>blue</color>
</product>
<product id="002">
<name>Shirt 1 - Men's</name>
<price>12.00</price>
<color>red</color>
</product>
<product id="023">
<name>Shirt 12 - Women's</name>
<price>15.00</price>
<color>purple</color>
</product>
<product id="024">
<name>Shirt 12 - Men's</name>
<price>15.00</price>
<color>yellow</color>
</product>
</products>
XML
);
foreach($xml->xpath('//product[starts-with(name/text(),"Shirt 12")]') as $product)
{
echo $product->name;
echo "\n";
echo $product->price;
echo "\n";
echo $product->color;
echo "\n\n";
}
<强>更新强>:
如果你需要通过id获取,只需更改XPath:
foreach($xml->xpath('//product[@id="023" or @id="024"]') as $product)
Online Demo也演示了如何获取ID属性。
答案 1 :(得分:1)
有很多方法可以解决这个问题,其中一种方法是你可以使用in_array()
函数来测试多个id值:
$ids = array('023', '024');
foreach ($product->product as $product) {
if (in_array($product['id'], $ids)) {
//display data using some code
}
}
请参阅相关问题:PHP If Statement with Multiple Conditions。
我选择了那个,因为你也可以在其他情况下使用它,并且还表明你的问题与XML没有特别的关系,但更多的是PHP本身。
我希望它对你有所帮助。
答案 2 :(得分:0)
你的意思是这样吗?
foreach ($product->product as $product) {
if ($product['id'] == '023'||$product['id'] == '024') {
//display data using some code
}
}
另外,不确定为什么每个id都有不同的php页面,如果它是一个产品页面,那么它应该是动态的
shirt.php?id=12